In diesem VBA-Tutorial wird beschrieben, wie Sie eine Datei mit den Befehlen Speichern und Speichern unter in VBA speichern.
Arbeitsmappe speichern - VBA
Der VBA-Befehl Speichern speichert eine Excel-Datei ähnlich wie das Klicken auf das Symbol Speichern oder die Verwendung der Verknüpfung zum Speichern (STRG + S).
Speichern einer angegebenen Arbeitsmappe
Um eine Arbeitsmappe zu speichern, verweisen Sie auf das Arbeitsmappenobjekt und verwenden Sie den Befehl Speichern.
1 | Arbeitsmappen("savefile.xlsm").Speichern |
Speichern Sie die aktive Arbeitsmappe
Hinweis: Dies ist die aktuell aktive Arbeitsmappe aus dem VBA-Code, die sich von ThisWorkbook unterscheidet, die den laufenden Code enthält.
1 | ActiveWorkbook.Speichern |
Speichern Sie die Arbeitsmappe, in der der Code gespeichert ist
Alle geöffneten Arbeitsmappen speichern
Dadurch werden alle geöffneten Arbeitsmappen durchlaufen und jede einzelne gespeichert.
12345 | Dim wb als ArbeitsmappeFür jedes wb in Application.Workbookswb.SpeichernNächstes wb |
Speichern Sie alle geöffneten Arbeitsmappen, die nicht schreibgeschützt geöffnet wurden
Hinweis: Das Öffnen einer Arbeitsmappe im schreibgeschützten Modus verhindert, dass die Datei gespeichert wird.
Um die Datei zu speichern, müssen Sie Speichern unter verwenden und die Datei unter einem anderen Namen speichern.
1234567 | Dim wb als ArbeitsmappeFür jedes wb in Application.WorkbooksWenn nicht wb ReadOnly dannwb.SpeichernBeenden, wennNächstes wb |
Durch eine Variable definierte Arbeitsmappe speichern
Dadurch wird eine Arbeitsmappe gespeichert, die einer Arbeitsmappenobjektvariablen zugewiesen wurde.
1234 | Dim wb als Arbeitsmappeset wb = workbooks("savefile.xlsm")wb.save |
Speichern Sie eine Arbeitsmappe, die durch eine Zeichenfolgenvariable definiert ist
Dadurch wird eine Arbeitsmappe gespeichert, deren Name in einer Zeichenfolgenvariable gespeichert wurde.
1234 | Wbstring als String dimmenwbstring = "savefile.xlsm"Arbeitsmappen(wbstring).save |
Speichern Sie eine Arbeitsmappe, die durch die Reihenfolge definiert wurde, in der sie geöffnet wurde.
Hinweis: Die erste geöffnete Arbeitsmappe hätte 1, die zweite 2 usw.
Speichern einer Arbeitsmappe basierend auf einem Zellenwert
Dadurch wird eine Arbeitsmappe gespeichert, deren Name in einem Zellenwert gefunden wird.
1234 | Wbstring als String dimmenwbstring = activeworkbook.sheets("sheet1").range("wb_save").valueArbeitsmappen(wbstring).save |
Speichern unter - VBA
Der VBA-Befehl „Speichern unter“ speichert eine Excel-Datei als neue Datei, ähnlich wie wenn Sie auf das Symbol „Speichern unter“ klicken oder die Verknüpfung „Speichern unter“ (Alt > F > A) verwenden.
Oben haben wir alle Möglichkeiten identifiziert, um anzugeben, welche Arbeitsmappe gespeichert werden soll. Sie können genau diese Methoden verwenden, um Arbeitsmappen zu identifizieren, wenn Sie Speichern unter verwenden.
Speichern unter verhält sich ähnlich wie Speichern, außer dass Sie auch den Namen der neuen Datei angeben müssen.
Tatsächlich gibt es bei Speichern unter viele potenzielle Variablen, die definiert werden müssen:
SaveAs-Syntax:
123 | Arbeitsmappenobjekt .SaveAs(FileName, FileFormat, Password, WriteResPassword, _ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, _AddToMru,TextCodepage, TextVisualLayout, Local) |
Eine vollständige Beschreibung aller SaveAs-Argumente finden Sie unten. Vorerst konzentrieren wir uns auf die gängigsten Beispiele.
Hinweis: Diese Argumente können als String mit Klammern oder als definierte Variablen eingegeben werden.
Syntaxbeispiele zum Speichern unter:
Arbeitsmappe speichern unter – gleiches Verzeichnis
1 | ActiveWorkbook.SaveAs Dateiname:= "neu" |
oder
1 | ActiveWorkbook.SaveAs "neu" |
oder
1234 | Wbstring als String dimmenwbstring = "neu"ActiveWorkbook.SaveAs Dateiname:= wbstring |
Arbeitsmappe Speichern unter – Neues Verzeichnis
1 | ActiveWorkbook.SaveAs Filename:= "C:\new" |
oder
1234 | Wbstring als String dimmenwbstring = "C:\neu"ActiveWorkbook.SaveAs Dateiname:= wbstring= |
Arbeitsmappe Speichern unter – Neues Verzeichnis, Dateierweiterung angeben
1 | ActiveWorkbook.SaveAs Filename:= "C:\new.xlsx" |
oder
1234 | Wbstring als String dimmenwbstring = "C:\neu.xlsx"ActiveWorkbook.SaveAs Dateiname:= wbstring |
Arbeitsmappe Speichern unter - Neues Verzeichnis, Dateierweiterung angeben - Alt-Methode
Sie können das Dateiformat auch in einem eigenen Argument angeben.
1234 | .xlsx = 51 '(52 für Mac).xlsm = 52 '(53 für Mac).xlsb = 50 '(51 für Mac).xls = 56 '(57 für Mac) |
1 | ActiveWorkbook.SaveAs Filename:= "C:\new", FileFormat:= 51 |
Arbeitsmappe Speichern unter - Kennwort zur geöffneten Datei hinzufügen
1 | ActiveWorkbook.SaveAs Dateiname:= "C:\new.xlsx", Passwort:= "Passwort" |
Arbeitsmappe Speichern unter - Kennwort für Schreibberechtigungen hinzufügen
Wenn kein korrektes Kennwort angegeben wird, wird die Arbeitsmappe als schreibgeschützt geöffnet
1 | ActiveWorkbook.SaveAs Filename:= "C:\new.xlsx", WriteRes:= "password" |
Arbeitsmappe Speichern unter – schreibgeschützt empfohlen
TRUE, um ein Meldungsfeld anzuzeigen, in dem empfohlen wird, die Datei schreibgeschützt zu öffnen.
1 | ActiveWorkbook.SaveAs Filename:= "C:\new.xlsx", ReadOnlyRecommended:= TRUE |
Andere Beispiele zum Speichern unter
Dialogfeld "Speichern unter erstellen"
Dadurch wird das Dialogfeld „Speichern unter“ generiert, in dem der Benutzer aufgefordert wird, die Datei zu speichern.
Beachten Sie, dass dieser einfache Code möglicherweise nicht in allen Fällen geeignet ist.
1 | Application.GetSaveAsFilename |
Dialogfeld „Speichern unter“ mit bereitgestelltem Standarddateinamen erstellen
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Dialogfeld „Speichern unter“ mit bereitgestelltem Standarddateinamen erstellen
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Neue Arbeitsmappe erstellen und speichern
Dadurch wird eine neue Arbeitsmappe erstellt und sofort gespeichert.
123456 | Dim wb als ArbeitsmappeSet wb = Workbooks.AddApplication.DisplayAlerts = Falsewb.SaveAs Dateiname:=”c:\Test1.xlsx”Application.DisplayAlerts = True |
Speichern von Benachrichtigungen deaktivieren
Wenn Sie mit dem Speichern in VBA arbeiten, können Sie auf verschiedene Speicherwarnungen oder -aufforderungen stoßen. Um Warnungen zu deaktivieren, fügen Sie diese Codezeile hinzu:
1 | Application.DisplayAlerts=False |
und um Benachrichtigungen wieder zu aktivieren:
1 | Application.DisplayAlerts=True |