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

Forumthread: VBA: Nach automatischen Speichern Makros löschen

VBA: Nach automatischen Speichern Makros löschen
02.06.2017 10:22:42
Pascal
Hallo liebes Forum,
Benutze folgenden VBA-Code um eine Arbeitsmappe die als Vorlage dient automatisch mit neuem Namen in einen bestimmten Pfad speichern zu lassen.
Sub Speichern_unter()
Dim Datei As String
Dim Verzeichnis As String
Dim SaveDummy As Variant
Dim strName As String
If Sheets("Hochkant").Range("H5").Value = "" Then
MsgBox "Bitte Teilenummer eingegeben!"
ElseIf Sheets("Hochkant").Range("AQ6").Value = "" Then
MsgBox "Bitte mindestens ein Stichwort eingeben! (Stichwortfeld Nr.1)"
Else
Verzeichnis = "K:\Benutzer\Ordner\" 'Verzeichnis-Vorschlag
Datei = Left(Range("H5"), 5) & "_" & Mid(Range("H5"), 6, 4) & "_" & Right(Range("H5"), 1) & " _
_Inspectionreport_" & Range("X5") & ActiveSheet.Range("AQ6").Value & ".xls" 'Datei-Vorschlag
SaveDummy = SpeichernUnter(Verzeichnis & Datei)
If SaveDummy  False Then ActiveWorkbook.SaveAs SaveDummy 'Es wurde im Dialog auf Speichern  _
gedrückt
Application.Workbooks(Datei).Close True
End If
End Sub

Function SpeichernUnter(VorgabeName As String) As Variant
SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel  _
Dateien (*.xls),*.xls*", _
FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")
End Function

Wie schaffe ich es das die "neue" Datei nicht mehr das Makro aus der "Vorlagen"-Datei enthält. Bzw überhaupt keine Makros mehr enthält?
Liebe Grüße
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Nach automatischen Speichern Makros löschen
02.06.2017 10:28:16
yummi
Hallo Pascal,
speicher doch einfach als xlsx, ohne Rückfragen Application displayAlert = false
und nach dem Speichern wieder auf true setzen. Wenn Du es unbedingt als xls brauchst, kannst du es ja danach umbenenen.
Gruß
yummi
AW: umbenennen reicht nicht!
02.06.2017 11:04:49
Daniel
Hi
das ist wie bei einer Geschlechtsumwandlung.
nur ein neuer Name reicht nicht, da muss mehr passieren.
Wenn die Datei als xls ohne Makros benötigt wird, müsste nach dem Speichern als xlsx folgendes passieren:
- Datei schließen
- Datei wieder öffnen
- Datei als xls speichern
- xlsx-Datei löschen
Sinnvoller wäre es, das Makro in der Vorlagendatei so zu schreiben, dass:
1. eine neue leere Datei angelegt wird
2. die benötigten Inhalte aus der Vorlagendatei in die neue Datei kopiert werden.
damit bleibt die Vorlagendatei unverändert, was sicherer ist und es ermöglicht, eine weitere Datei aus der Vorlage erstellen zu können, ohne dass diese erneut geöffnet werden muss.
Gruß Daniel
Anzeige
AW: umbenennen reicht nicht!
02.06.2017 13:49:18
Pascal
Vielen Dank für eure Hilfe.
@Daniel
So wäre es natürlich Perfekt! Nur bräuchte ich auch den entsprechenden Code :D
Wäre das möglich?
Beste Grüße
AW: umbenennen reicht nicht!
02.06.2017 14:07:01
Daniel
klar ist das möglich.
wenn man Code haben will, muss man ihn sich schreiben.
den ersten Teil des Codes hast du ja auch (hoffentlich) selbst geschrieben, da sollte das andere auch nicht schwieriger sein.
Du sollltest dir halt die Funktionen SaveCopyAs und SaveAs nochmal genauer anschauen (z.B. keine Dateierweiterung im Dateinamen, dafür muss man den Dateityp immer mit angeben)
zum Löschen einer Datei gibt es die Funktion KILL pfad\Dateiname
die andere Methode (neue Datei anlegen, Sachen rüber kopieren) ist auch nicht schwer.
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makros nach dem automatischen Speichern in Excel entfernen


Schritt-für-Schritt-Anleitung

  1. VBA-Code anpassen: Um sicherzustellen, dass nach dem automatischen Speichern keine Makros mehr in der neuen Datei enthalten sind, kannst du die Datei als .xlsx speichern, was keine Makros unterstützt. Hier ein Beispiel, wie du das umsetzen kannst:

    Sub Speichern_unter()
       Dim Datei As String
       Dim Verzeichnis As String
       Dim SaveDummy As Variant
       Dim strName As String
    
       If Sheets("Hochkant").Range("H5").Value = "" Then
           MsgBox "Bitte Teilenummer eingegeben!"
       ElseIf Sheets("Hochkant").Range("AQ6").Value = "" Then
           MsgBox "Bitte mindestens ein Stichwort eingeben! (Stichwortfeld Nr.1)"
       Else
           Verzeichnis = "K:\Benutzer\Ordner\"
           Datei = Left(Range("H5"), 5) & "_" & Mid(Range("H5"), 6, 4) & "_" & Right(Range("H5"), 1) & "_Inspectionreport_" & Range("X5") & ActiveSheet.Range("AQ6").Value & ".xlsx"
           SaveDummy = SpeichernUnter(Verzeichnis & Datei)
           If SaveDummy <> False Then
               ActiveWorkbook.SaveAs SaveDummy, FileFormat:=xlOpenXMLWorkbook ' Speichern ohne Makros
               Application.Workbooks(Datei).Close True
           End If
       End If
    End Sub
    
    Function SpeichernUnter(VorgabeName As String) As Variant
       SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel Dateien (*.xlsx),*.xlsx*", _
       FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")
    End Function
  2. Makros löschen: Wenn die Datei als .xls gespeichert werden soll, musst du die Makros manuell entfernen. Hierbei kannst du das Makro löschen aus Excel verwenden.


Häufige Fehler und Lösungen

  • Fehler: Datei lässt sich nicht speichern: Wenn du beim Speichern eine Fehlermeldung bekommst, überprüfe, ob der Pfad korrekt ist und ob du Schreibrechte für den Ordner hast.

  • Makros sind immer noch vorhanden: Stelle sicher, dass du die Datei im .xlsx Format speicherst, da dieses Format keine Makros unterstützt. Andernfalls musst du die Makros manuell aus der Datei entfernen.


Alternative Methoden

Eine alternative Methode, um Makros aus Excel zu entfernen, ist die Verwendung von KILL für die Datei, nachdem du eine Kopie ohne Makros erstellt hast. Hier ein Beispiel:

' Datei speichern und anschließend alte Datei löschen
Sub SaveAndDeleteOld()
    Dim oldFilePath As String
    Dim newFilePath As String

    oldFilePath = "K:\Benutzer\Ordner\alteDatei.xls"
    newFilePath = "K:\Benutzer\Ordner\neueDatei.xlsx"

    ' Speichern ohne Makros
    ActiveWorkbook.SaveCopyAs newFilePath
    ' Alte Datei löschen
    Kill oldFilePath
End Sub

Praktische Beispiele

Um eine neue leere Datei zu erstellen und die benötigten Inhalte aus der Vorlagendatei zu kopieren, kannst du folgenden Code nutzen:

Sub NeueDateiErstellen()
    Dim wbNeu As Workbook
    Dim wbVorlage As Workbook

    Set wbVorlage = ThisWorkbook
    Set wbNeu = Workbooks.Add

    ' Inhalte kopieren
    wbVorlage.Sheets("Daten").Copy Before:=wbNeu.Sheets(1)

    ' Neue Datei speichern
    wbNeu.SaveAs "K:\Benutzer\Ordner\neueDatei.xlsx", FileFormat:=xlOpenXMLWorkbook
    wbNeu.Close
End Sub

Tipps für Profis

  • Makros effizient entfernen: Um alle Makros in Excel zu löschen, kannst du die Funktion alle makros löschen excel verwenden, um vor dem Speichern sicherzustellen, dass keine unerwünschten Makros verbleiben.

  • Sichere Vorlagen verwenden: Erstelle eine separate Vorlage, die keine Makros enthält, um immer eine saubere Basis zu haben.


FAQ: Häufige Fragen

1. Wie kann ich alle Makros in Excel löschen? Um alle Makros zu löschen, gehe zu "Entwicklertools" > "Makros" und lösche die bestehenden Makros manuell.

2. Was passiert, wenn ich eine .xls Datei speichere? Eine .xls Datei kann Makros enthalten. Wenn du sicherstellen möchtest, dass keine Makros vorhanden sind, speichere die Datei im .xlsx Format.

3. Gibt es eine Möglichkeit, Makros automatisch zu entfernen? Ja, du kannst ein VBA-Skript verwenden, das automatisch alle Makros entfernt, bevor du die Datei speicherst.

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