VBA-Code beim Speichern in Excel entfernen
Schritt-für-Schritt-Anleitung
Um VBA-Code beim Speichern einer Excel-Datei zu entfernen, kannst du den folgenden VBA-Code verwenden:
Private Sub CommandButton3_Click()
Dim varFileName As Variant, objShp As Shape, sh As Object
ChDrive "C"
ChDir "C:/"
varFileName = Application.GetSaveAsFilename(varFileName, "Excel Arbeitsmappe ohne VBA (*.xls),*.xlsx,")
If Not varFileName = False Then
Application.DisplayAlerts = False
For Each sh In Sheets
If Not sh.Name = ActiveSheet.Name Then sh.Delete
Next sh
Application.DisplayAlerts = True
For Each objShp In ActiveSheet.Shapes
If objShp.Type = msoOLEControlObject Then objShp.Delete
Next objShp
ThisWorkbook.SaveAs varFileName, FileFormat:=xlOpenXMLWorkbook
Else
MsgBox "Abgebrochen.."
End If
End Sub
Dieser Code speichert die Arbeitsmappe als .xlsx-Datei, wodurch alle Makros entfernt werden. Stelle sicher, dass die VBA-Projekteinstellungen im Trustcenter aktiviert sind, damit der Zugriff auf das VBA-Projektmodell möglich ist.
Häufige Fehler und Lösungen
-
Fehlermeldung beim Öffnen der Datei
- Wenn du die Datei nach dem Speichern nicht öffnen kannst, überprüfe, ob du den korrekten Dateityp verwendest. Verwende
FileFormat:=xlOpenXMLWorkbook anstelle von FileFormat:=xlWorkbookNormal.
-
Makros bleiben erhalten
- Wenn du die Datei öffnest und immer noch Makros siehst, musst du sicherstellen, dass du die Datei nach dem Speichern schließt und dann die neu gespeicherte .xlsx-Datei öffnest.
Alternative Methoden
Eine alternative Methode ist das direkte Löschen aller Module im VBA-Projekt. Nutze diesen Code, um alle Module zu entfernen:
Sub CodeEntfernen()
Dim VBComp As Object
If MsgBox("Soll jetzt wirklich der gesamte Code entfernt werden?", vbQuestion + vbYesNo, "Code entfernen") <> vbYes Then Exit Sub
For Each VBComp In ThisWorkbook.VBProject.VBComponents
If VBComp.Type = 1 Then ' Type: 1=Modul
VBComp.CodeModule.DeleteLines StartLine:=1, Count:=VBComp.CodeModule.CountOfLines
End If
Next
End Sub
Verwende diesen Code als letzten Schritt, um sicherzustellen, dass alle VBA-Module entfernt werden.
Praktische Beispiele
Beispiel 1: Makro aus Excel entfernen
ThisWorkbook.SaveAs varFileName, FileFormat:=xlOpenXMLWorkbook
Dieser Befehl speichert die Datei ohne VBA-Code.
Beispiel 2: Alle Module löschen
With ThisWorkbook.VBProject
For Each VBComp In .VBComponents
If VBComp.Type = 1 Then
.VBComponents.Remove .VBComponents(VBComp.Name)
End If
Next
End With
Dieser Code entfernt alle Module aus dem aktuellen VBA-Projekt.
Tipps für Profis
- Stelle sicher, dass du die richtigen Berechtigungen im Trustcenter hast, um VBA-Module zu manipulieren.
- Teste deine Makros in einer Kopie deiner Arbeitsmappe, um Datenverlust zu vermeiden.
- Nutze Fehlerbehandlungsroutinen in deinen VBA-Skripten, um unerwartete Fehler während der Ausführung zu handhaben.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass alle Makros gelöscht werden?
Um sicherzustellen, dass alle Makros gelöscht werden, speichere die Datei im .xlsx-Format und verwende den entsprechenden VBA-Code, um Module zu entfernen.
2. Was passiert, wenn ich den falschen Dateityp auswähle?
Wenn du den falschen Dateityp auswählst, kann es zu Fehlermeldungen kommen, und die Datei kann möglicherweise nicht geöffnet werden. Verwende immer den korrekten Dateiformatcode wie xlOpenXMLWorkbook.