| Application.VBE.ActiveCodePane.CodeModule, VBProject.VBComponents |
|
|
| Module und Code komplett aus Arbeitsmappe entfernen |
|
| Sub bRemoveAllCode() |
| Dim lCount As Long |
| Dim objCode As Object |
| Dim objComponents As Object |
| Dim wkbBook As Workbook 'bei Word = As Document |
|
| Set wkbBook = ActiveWorkbook 'bei Word = ActiveDocument |
| Set objComponents = wkbBook.VBProject.VBComponents |
|
| lCount = wkbBook.VBProject.VBComponents.Count |
|
| 'Zuerst alle Module löschen |
| For Each objCode In objComponents |
| If objCode.Type <> 100 Then |
| objComponents.Remove objCode |
| End If |
| Next objCode |
|
| lCount = wkbBook.VBProject.VBComponents.Count |
|
| 'dann diesen Code löschen (der darf sich nicht in einem "Modul" befinden...) |
| For Each objCode In objComponents |
| If objCode.Type = 100 Then |
| objCode.CodeModule.DeleteLines 1, objCode.CodeModule.CountOfLines |
| End If |
| Next objCode |
|
| End Sub |
| |
|
| Makro löscht sich selber Zeile für Zeile |
|
| Public Sub SenselessMacro() |
| With Application.VBE.ActiveCodePane.CodeModule |
| Dim StartLine As Long, Line As Long |
| For Line = 1 To .CountOfLines |
| If .Lines(Line, 1) = "Public Sub SenselessMacro()" Then |
| StartLine = Line |
| End If |
| If StartLine > 0 Then |
| If .Lines(Line, 1) = "End Sub" Then |
| Call .DeleteLines(StartLine, Line + 1 - StartLine) |
| Exit For |
| End If |
| End If |
| Next Line |
| End With |
| End Sub |
| |
|
| Dieses Beispiel demonstriert das Löschen eines bestimmten Makros. |
| In diesem Fall wird das Makro mit dem Namen "Löschmich" gelöscht. |
| Falls nicht vorhanden wird eine entsprechende Fehlermeldung ausgegeben. |
|
| Sub Makro_löschen() |
| Dim FoundFlag As Boolean |
| Dim Zeilen() |
| Makroname = "Löschmich" |
| Suchtext = "Sub " & Makroname & "()" |
| Set VBE = Application.VBE.ActiveCodePane.CodeModule |
| FoundFlag = False |
| With VBE |
| For x = 1 To .CountOfLines |
| If UCase(.Lines(x, 1)) = UCase(Suchtext) Then FoundFlag = True |
| If FoundFlag Then |
| Zähler = Zähler + 1 |
| ReDim Preserve Zeilen(Zähler) |
| Zeilen(Zähler) = x |
| If .Lines(x, 1) = "End Sub" Then |
| .DeleteLines Zeilen(1), UBound(Zeilen) |
| Exit For |
| End If |
| End If |
| Next x |
| If Not FoundFlag Then MsgBox "Makro " & Makroname & " nicht gefunden !", vbCritical |
| End With |
| End Sub |
|