Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1072to1076
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
Inhaltsverzeichnis

Module löchen

Module löchen
10.05.2009 14:22:06
Helmut
Hallo,
mittels folgenden Makro lösche ich Module aus dem aktiven Workbook:

Sub modul_löschen()
On Error Resume Next
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modul1")
.VBComponents.Remove .VBComponents("Modul2")
.VBComponents.Remove .VBComponents("Modul3")
.VBComponents.Remove .VBComponents("Modul4")
.VBComponents.Remove .VBComponents("Modul5")
.VBComponents.Remove .VBComponents("Modul6")
.VBComponents.Remove .VBComponents("Modul7")
.VBComponents.Remove .VBComponents("Modul8")
.VBComponents.Remove .VBComponents("Modul9")
.VBComponents.Remove .VBComponents("Modul10")
.VBComponents.Remove .VBComponents("Modul11")
.VBComponents.Remove .VBComponents("Modul12")
.VBComponents.Remove .VBComponents("Modul13")
.VBComponents.Remove .VBComponents("Modul14")
.VBComponents.Remove .VBComponents("Modul15")
End With
End Sub


Nun gibt es aber auch die Situation, dass der Modulname z.B. von Modul1 in "Vorlage" geändert wurde. Dann läuft das Mako ins Leere!
Gibt es eine Lösung, alle Module aus dem aktiven Workbook zu löschen, ohne die Namen zu kennen?
Gruß
Helmut

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Module löchen
10.05.2009 14:25:47
zu
hi,
teste mal das, ein makro von alfons seeberger
gruß
robert

Sub Module_UserFormen_entfernen()
'alle Module, UserFormen und Klassenmodule entfernen
Dim Ding As Object
With ThisWorkbook.VBProject
For Each Ding In ThisWorkbook.VBProject.VBComponents
'Type 100 = DieseArbeitsmappe und alle Tabellen
'Type 1 = Modul
'Type 3 = UserForm
'Type 2 = Klassenmodul
If Ding.Type  100 Then
.VBComponents.Remove Ding
End If
Next
End With
End Sub


AW: Module löchen
10.05.2009 20:03:27
Helmut
Hallo Robert,
klappt gut. Danke!
Was ich aber nicht verstehe - wofür ist die Abfrage?
If Ding.Type 100 Then
.VBComponents.Remove Ding
End If
'Type 100 = DieseArbeitsmappe und alle Tabellen
'Type 1 = Modul
'Type 3 = UserForm
'Type 2 = Klassenmodul
Wenn ich das änder in,
If Ding.Type 3 Then
.VBComponents.Remove Ding
End If
Next
End With
End Sub
dann würde ich erwarten, dass die Makro in der Arbeitsmappe gelöscht werden. Aber es passiert nix.
Bin ich auf dem Holzweg? Ziel war, es diese Makros nun auch zu löschen.
Helmut
Anzeige
AW: Module löchen
10.05.2009 20:28:03
eli
Hallo Helmut,
Mit Type gibst Du an, welche Objekte Du löschen willst.
Bei VBA gibt es mehrere Möglichkeiten, wo Code steht.
Bei z.B. 3 löschst Du alle Formulare (UserForm).
Gruss eli
AW: Module löchen
10.05.2009 20:33:50
Helmut
Hallo Eli,
aber die Abfrage heißt ja: bist Du ungleich 3 dann....
Also müsste doch - da die MAkros in den Arbeitsmappen (z.B. open) = 100 sind, diese gelöscht werden, aber es passiert nix. Oder?
Helmut
AW: Module löchen
10.05.2009 21:11:32
eli
Also Helmut,
in diesem Gebiet bin ich auch nicht der Profi.
Ich hab mal in der Hilfe geschaut und komm nicht auf die
Werte aus dem Beispiel (vbext_ct_StdModule = Modul,
vbext_ct_ClassModule = Klassenmodul usw.) allerdings
hab ich grad nur office 2000 zur Verfügung. Ich lass die Frage mal offen.
Gruss eli
Anzeige
klappt es nun gut der nicht? owT
11.05.2009 07:22:07
robert
AW: klappt es nun gut oder nicht? owT
11.05.2009 07:36:19
robert
Robert
11.05.2009 07:47:39
Helmut
Hallo Robert,
also die Makros in der Arbeitsmappe oder Tabellen (z.B. open) werden dadurch nicht gelöscht.
Wäre toll, wenn das auch noch klappen würde.
Helmut
PS: War gestern nicht mehr online, sonst hätte ich früher geschrieben!
AW: Robert
11.05.2009 08:02:34
robert
hi probiers mal so-siehe Type-Bezeichnung im makro
gruß
robert

Sub Module_UserFormen_entfernen()
'alle Module, UserFormen und Klassenmodule entfernen
Dim Ding As Object
With ThisWorkbook.VBProject
For Each Ding In ThisWorkbook.VBProject.VBComponents
'Type 100 = DieseArbeitsmappe und alle Tabellen
If Ding.Type = 100 Then
.VBComponents.Remove Ding
End If
Next
End With
End Sub


Anzeige
AW: Robert
11.05.2009 08:17:42
Erich
Hi Helmut,
probier mal den Code (von Nepumuk), zu lesen in
http://clever-forum.de/read.php?11,105681,105685#msg-105685

Public Sub alle_Makros_loeschen()
Dim objVBComponents As Object
With ThisWorkbook.VBProject
For Each objVBComponents In .VBComponents
Select Case objVBComponents.Type
Case 1, 2, 3 'Module, Klasssenmodule, Userforms
.VBComponents.Remove .VBComponents(objVBComponents.Name)
Case 100 'Workbook, Sheets
With objVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Das ist die Lösung!
11.05.2009 21:28:26
Helmut
Hallo Erich,
vielen Dank an Dich und Nepumuk. Es klappt bestens!
Helmut

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige