Anzeige
Archiv - Navigation
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
764to768
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro durch Makro löschen

Makro durch Makro löschen
18.05.2006 14:12:37
Alex
Hallo,
habe ein Makro zum löschen aller Makros in einer Arbeitsmappe geschrieben.
Es werden auch alle Makros gelöscht nur die Userforms nicht. Somit ist die Datei nicht sauber und die Excel Startabfrage kommt immmer wieder.
Kann mir hier jemand weiterhelfen?
[code]

Sub MakrosEntfernen()
Dim CodeObj As Object
If Val(Application.Version) >= 8 Then
With ActiveWorkbook.VBProject
For Each CodeObj In .VBComponents
Select Case CodeObj.Type
Case 1, 2
.VBComponents.Remove CodeObj
Case Else
With CodeObj.CodeModule
If .CountOfLines > 0 Then
.deleteLines 1, .CountOfLines
End If
End With
End Select
Next
End With
End If
For Each CodeObj In ActiveWorkbook.Names
Select Case CodeObj.MakroType
Case xlFunction, xlCommand
CodeObj.Delete
End Select
Next
End Sub

[/code]

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro durch Makro löschen
18.05.2006 15:26:28
Luschi
Hallo Achim,
ich mach das so:
Sub CodeKiller(dateiName As String, cBoxWert As Boolean)
Dim wb As Workbook, n1 As Long, n2 As Long, s As String, _
t As Integer, ok As Boolean
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Set wb = Workbooks(dateiName)
For n1 = wb.VBProject.VBComponents.Count To 1 Step -1
s = wb.VBProject.VBComponents(n1).Name
t = wb.VBProject.VBComponents(n1).Type
ok = False
Select Case t
Case vbext_ct_Document
'Klassenmodule von "DieseArbeitsmappe" kann man nicht löschen
'deshalb alle Code-Zeilen entfernen
n2 = wb.VBProject.VBComponents(n1).CodeModule.CountOfLines
If n2 > 0 Then
wb.VBProject.VBComponents(n1).CodeModule.DeleteLines 1, n2
End If
ok = False
Case vbext_ct_ClassModule, vbext_ct_StdModule
'Standard- & die anderen Klassenmodule
ok = True
Case vbext_ct_MSForm
'Formulare nur auch Wunsch
ok = cBoxWert
End Select
If ok Then
wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents(n1)
End If
Next n1
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Der Code steht in 1 AddIn, sonst würde sich dieser Code ja selbst weglöschen Die Vba-Procedur wird in 1 Formular aufgerufen. Hier werden in 1 Listbox alle gerade geöffneten Arbeitsmappen aufgelistet. Daraus kann man sich ein Workbook auswählen und in 1 Checkbox bestimmen, ob auch die Formulare gelöscht werden sollen (cBoxWert = True).
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Makro durch Makro löschen
18.05.2006 16:15:28
Alex
Das Problem ist, dass dies Platformunabhängig sein muß. Ein Add-in müßte ich ja auf jedem Rechner einfügen. Lieber würde ich die Makros direkt löschen, sprich im Netzwerk von jedem Rechner aus.
Gruß
Alex
AW: Makro durch Makro löschen
18.05.2006 17:34:38
Luschi
Hallo Axel,
es muß natürlich kein AddIn sein, sondern kann auch ein normale Excel-Datei sein;
was ich damit sagen wollte:
Dieser Code muß in einer Extra-Datei liegen, also nicht in der Datei, in der die Zeilen gelöscht werden sollten.
Diese Datei kann dann auf 1 Netzlaufwerk liegen und muß in Excel geöffnet werden.
Im Übrigen kann man eine *.xla-Datei über den Datei-Öffnen-Dialog starten, ohne daß sie als AddIn installiert ist.
Beide Dateien müssen in 1 Excel-Instanz gleichzeitig geöffnet sein. Wenn man noch ein bischen Menü-Pflege macht, wird beim Öffnen der Datei mit dem Lösch-Code ein Menüpunkt zum Starten des Löschvorgangs erscheinen.
Du wirst ja sicher nicht nicht umsonst den Code Löschen, sondern auch aus 1 Master-Datei neuen Programm-Code und Userforms importieren wollen.
Da ist diese Vorgehensweisen dann sinnvoll.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Makro durch Makro löschen
19.05.2006 10:48:48
Alex
Hallo,
habe es auf beiden wegen probiert, kann dass Add-In aber nicht ausführen. Habe bisher auch noch nie mit Add-Ins gearbeitet.
Das Add in ist aktiviert, Im VBA Editor ist es auch mit Quellcode vorhanden, läßt sich aber auch dort nicht starten.
AW: Makro durch Makro löschen
19.05.2006 17:31:19
Luschi
Hallo Axel,
ich schicke Dir morgen eine Demo-Datei mit offenem Vba-Code.
Gruß von Luschi
aus klein-Paris
AW: Makro durch Makro löschen
21.05.2006 08:40:10
Luschi
Hallo Alex,
hier ein Beispiel-AddIn zum Löschen gesamten Vba-Code aus einer xls-Datei.
Im Menü "Extras" gibt es am Schlß 1 Eintrag zum Starten.
https://www.herber.de/bbs/user/33818.xla
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Makro durch Makro löschen
22.05.2006 10:19:28
Alex
Danke, darf das File nur leider nicht in der Firma öffnen. Bei meinem Makro habe brauche ich nur "Case 1, 2" in "Case 1, 2, 3" umwandeln und siehe da schon funktionierts. Manchmal doch nicht ganz so kompliziert.
Gruß
Alex

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige