1k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich möchte alle Module bis auf das Modul "Test" in einem VBAProjekt löschen. Weiß jemand wie der Code hierzu heißt?
Danke und Gruß A.

5 Antworten

0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,

ich habe dazu einen Code im web gefunden, der aber bei mir nicht funktioniert (Fehlermeldung).
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

Hat da jemand noch einen Tipp woran das liegen könnte?
Danke und Gruß!
0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)
Sägst du vielleicht am Ast, auf dem du sitzt? Will heißen: Versucht der
Code, auch das Modul zu löschen in dem das Programm steht?

Wie lautet die Fehlermeldung?

Gruß Flupo
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Flupo,

du hast schon Recht mit deiner Vermutung. Ich will natürlich alle Module löschen außer dem, das ich gerade ausführe (Modul:"TEST").
Der Fehler tritt aber schon in der Zeile "With this Workbook..." auf:
"Der programmatische Zugriff auf das VB-Projekt ist nicht sicher" ??
Gruß A.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Danke! Damit klappt es. Ich habe eine entsprechende Bedingung eingebaut, damit nicht das aktive Modul gelöscht wird:
Dim Ding As Object ' Löschen von Modulen/Codes
With ThisWorkbook.VBProject
For Each Ding In ThisWorkbook.VBProject.VBComponents
If Ding.Type <> 100 And Ding.Type <> 3 And Ding.name <> "EinAug" And Ding.name <> "DetailDispE" Then
.VBComponents.Remove Ding
End If
Next
End With

Viele Grüße A.
...