Ist es möglich, alle VBA-Module aus einer Excel-Datei mit VBA zu entfernen?Entfernen Sie alle VBA-Module aus der Excel-Datei?
Die Namen der Module, wenn sie überhaupt existieren, sind vor dem Ausführen dieses Skripts unbekannt.
Ist es möglich, alle VBA-Module aus einer Excel-Datei mit VBA zu entfernen?Entfernen Sie alle VBA-Module aus der Excel-Datei?
Die Namen der Module, wenn sie überhaupt existieren, sind vor dem Ausführen dieses Skripts unbekannt.
Offensichtlich können Sie. Der folgende Code wird den Job:
Sub compact_code()
On Error Resume Next
Dim Element As Object
For Each Element In ActiveWorkbook.VBProject.VBComponents
ActiveWorkbook.VBProject.VBComponents.Remove Element
Next
End Sub
Dadurch werden alle Module einschließlich ClassModules und Userforms entfernen, aber alle Objektmodule (Bettwäsche, Arbeitsmappe) halten.
Hier ist eine ähnliche Alternative, die nur die ClassModules entfernt:
On Error Resume Next
With wbk.VBProject
For x = .VBComponents.Count To 1 Step -1
If .VBComponents(x).Type = vbext_ct_StdModule Then
.VBComponents.Remove .VBComponents(x)
End If
Next x
End With
On Error GoTo 0
Würde das nicht nur * Standard-Codemodule * entfernen? –
Das Komische ist, dass es nicht zuerst von den letzten iterieren erforderlich, wenn Looping, die in der Regel in dieser Situation erforderlich ist, wenn jeder Löschvorgang ausgeführt wird. Alle Module, Benutzerformen und Klassenmodule werden entfernt. –
Ich würde den Verweis auf 'ActiveWorkbook' auf' ThisWorkbook' oder eine bestimmte Arbeitsmappenreferenz ändern, wenn ich den Code einer anderen Arbeitsmappe ändern möchte. – pablete
@pablete Achten Sie darauf, wenn Sie dies in einer Vorlage haben tho: 'ThisWorkbook' bezieht sich auf die Vorlage, nicht das Projekt selbst. Dies kann manchmal schwierig sein. – Mafii