Ich möchte vor dem Schließen einer Datei das VBA Projekt komplett löschen.
Ist das irgendwie möglich? Es besteht nur ein Modul.
Vielen Dank Euch!!
Liebe Grüße
Jonathan
Sub Module_UserFormen_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
Sub demo()
ThisWorkbook.Save
Application.Quit
End Sub
Gruss Rainer
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Datei As String
Dim wbk As Workbook
Dim codeObject As Object
Dim fs
Dim temp() As String
On Error Resume Next
Cancel = True
Set fs = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False
While Datei = ""
Datei = Application.GetSaveAsFilename(, "Microsoft Office Excel Arbeitsmappe (*.xls), (*.xls)" _
, , "Microsoft Excel")
temp = Split(Datei, "\")
Set wbk = Nothing
If fs.FileExists(Datei) Then
If MsgBox("Die Datei " & temp(UBound(temp)) & " besteht bereits. Wollen Sie die bestehende _
Datei überschreiben?", vbYesNo, "Microsoft Excel") = vbNo Then
Datei = ""
Else
Set wbk = Workbooks(temp(UBound(temp)))
If Not wbk Is Nothing Then
MsgBox ("Kann nicht unter dem Namen einer bereits geöffneten Arbeitsmappe speichern. Es _
ist bereits ein Dokument mit dem von Ihnen angegebenen Namen geöffnet. Wählen Sie einen anderen Namen für die Arbeitsmappe oder schließen Sie das geöffnete Dokument, bevor Sie speichern.")
Datei = ""
End If
End If
End If
Wend
If Datei Then
ThisWorkbook.SaveCopyAs Filename:=Datei
Set wbk = Workbooks.Open(Datei)
If Not wbk Is Nothing Then
wbk.Sheets("INDEX-Seite").Cells(39, 1).Value = Datei
' Löscht den Code in DieseArbeitsmappe
Set codeObject = wbk.VBProject.VBComponents(wbk.CodeName)
codeObject.codemodule.deletelines 1, codeObject.codemodule.countoflines
' Löscht das Modul, Modulname hier anpassen
wbk.VBProject.VBComponents.Remove wbk.VBProject.VBComponents("Modul1")
wbk.Save
ThisWorkbook.Close False
End If
End If
Application.ScreenUpdating = True
On Error GoTo 0
End Sub
Der Trick besteht darin, dass das Workbook unter anderem Namen gespeichert werden muss und in diesem Zuge der Code in der neuen Datei gelöscht wird.
Wenn Du sie mit Code speichern willst, dann mußt Du in den Entwurfsmodus gehen bzw. den Code in ein Modul statt in BeforeSave packen (dann aber die Löschroutinen anpassen).
Gruss, Jogy
Um ein Excel VBA Projekt zu löschen, befolge diese Schritte:
ALT + F11
, um den VBA-Editor zu öffnen.Falls du das gesamte VBA Projekt löschen möchtest, kannst du auch den folgenden VBA-Code verwenden:
Sub Module_UserFormen_entfernen()
Dim Ding As Object
With ThisWorkbook.VBProject
For Each Ding In ThisWorkbook.VBProject.VBComponents
If Ding.Type <> 100 Then
.VBComponents.Remove Ding
End If
Next
End With
End Sub
Problem: Das VBA Projekt lässt sich nicht löschen.
Lösung: Stelle sicher, dass die Datei nicht schreibgeschützt ist und keine anderen Benutzer sie geöffnet haben.
Problem: Excel stürzt ab, wenn das Projekt gelöscht wird.
Lösung: Versuche, das Projekt in einem neuen Excel-Dokument zu löschen, um mögliche Konflikte zu vermeiden.
Eine alternative Methode zum Löschen eines Excel VBA Projekts ist die Verwendung eines Excel-AddIns. Dies kann besonders nützlich sein, wenn du regelmäßig VBA Projekte löschen musst. Ein AddIn ermöglicht es dir, Skripte zu speichern und sie bei Bedarf auszuführen, ohne den normalen Arbeitsablauf zu stören.
Hier ist ein Beispielcode, der das VBA Projekt beim Speichern der Arbeitsmappe automatisch löscht:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim codeObject As Object
On Error Resume Next
Cancel = True
' Speichern unter neuem Namen
ThisWorkbook.SaveCopyAs Filename:="NeuerName.xls"
' Öffne die neue Datei
Dim wbk As Workbook
Set wbk = Workbooks.Open("NeuerName.xls")
' Löscht den Code
Set codeObject = wbk.VBProject.VBComponents(wbk.CodeName)
codeObject.codemodule.deletelines 1, codeObject.codemodule.countoflines
wbk.VBProject.VBComponents.Remove wbk.VBProject.VBComponents("Modul1")
wbk.Save
ThisWorkbook.Close False
End Sub
1. Kann ich ein VBA Projekt löschen, ohne Excel zu schließen?
Ja, du kannst ein VBA Projekt löschen, ohne Excel zu schließen, indem du den VBA-Editor verwendest oder den entsprechenden Code ausführst.
2. Was passiert, wenn ich ein Modul aus einem VBA Projekt lösche?
Das Modul wird entfernt und alle darin enthaltenen Codes sind nicht mehr verfügbar. Stelle sicher, dass du alle notwendigen Sicherungen hast.
3. Ist es möglich, ein gelöschtes VBA Projekt wiederherzustellen?
Wenn du keine Sicherungskopie hast, ist es in der Regel nicht möglich, ein gelöschtes VBA Projekt wiederherzustellen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen