Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Projekt komplett löschen

VBA Projekt komplett löschen
28.10.2008 12:24:00
Jonathan
Hallo zusammen!
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
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Projekt komplett löschen
28.10.2008 12:34:58
rofu
hallo,
probier das mal
gruß
rofu

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


Anzeige
AW: VBA Projekt komplett löschen
28.10.2008 13:13:29
Jonathan
Hey,
danke für die schnelle Antwort!
Jetzt ist mir gerade eins eingefallen:
Die Datei muss danach ja gespeichert und auch automatisch geschlossen (bzw. Excel beendet) werden.
Das kann ja eigentlich gar nicht funktionieren?!
AW: VBA Projekt komplett löschen
28.10.2008 13:15:00
Ramses
Hallo
"...Das kann ja eigentlich gar nicht funktionieren..
Warum nicht ?

Sub demo()
ThisWorkbook.Save
Application.Quit
End Sub


Gruss Rainer

Anzeige
AW: VBA Projekt komplett löschen
28.10.2008 13:17:52
Jonathan
Hey,
weil dann ja auch wieder ein VBA Projekt vorhanden ist?!
AW: VBA Projekt komplett löschen
28.10.2008 13:45:28
JogyB
Hallo.
Hier mal ein Beispielcode, den ich verwende. Vielleicht kannst Du da ja was draus machen.

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

Anzeige
AW: VBA Projekt komplett löschen
28.10.2008 13:45:00
Luschi
Hallo Jonathan,
solche Aktionen muß man natürlich auslagern in ein Excel-AddIn.
Gruß von Luschi
aus klein-Paris
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Projekt komplett löschen in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel VBA Projekt zu löschen, befolge diese Schritte:

  1. Öffne die Excel-Datei: Starte Excel und öffne die Datei, die das VBA Projekt enthält.
  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Projekt auswählen: Suche im Projekt-Explorer auf der linken Seite nach dem VBA Projekt, das du löschen möchtest.
  4. Modul entfernen: Klicke mit der rechten Maustaste auf das Modul, das du löschen möchtest, und wähle „Entfernen“. Bestätige das Löschen.
  5. Speichern: Schließe den VBA-Editor und speichere die Excel-Datei.

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

Häufige Fehler und Lösungen

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.


Alternative Methoden

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.


Praktische Beispiele

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

Tipps für Profis

  • Sicherungskopien erstellen: Bevor du ein VBA Projekt löschst, erstelle immer eine Sicherungskopie der Datei, um Datenverlust zu vermeiden.
  • Verwendung von Skripten: Automatisiere den Prozess des Löschen von VBA Projekten mithilfe von Skripten, um Zeit zu sparen.
  • Regelmäßige Überprüfung: Überprüfe regelmäßig deine VBA Projekte, um nicht benötigte Module zu entfernen und die Datei schlank zu halten.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige