Datei im gleichen Ordner speichern mit VBA
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei im gleichen Ordner wie die Vorlage zu speichern, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
-
Öffne deine Excel-Vorlage und gehe in den VBA-Editor (Alt + F11).
-
Füge den folgenden Code in das Modul „DieseArbeitsmappe“ ein:
Option Explicit
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim CP As Object
If ThisWorkbook.FullName Like "*.xlt?" Or ThisWorkbook.FullName Like "*.xlt" Then
For Each CP In ThisWorkbook.CustomDocumentProperties
If CP.Name = "FullPath" Then CP.Delete: Exit For
Next
ThisWorkbook.CustomDocumentProperties.Add Name:="FullPath", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:=ThisWorkbook.FullName
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
End If
End Sub
-
Füge den folgenden Code in ein neues Modul ein:
Option Explicit
Sub SaveSpezial()
Dim CP As Object, sPath$, sName$, sSaveFullName$
For Each CP In ThisWorkbook.CustomDocumentProperties
If CP.Name = "FullPath" Then Exit For
Next
If CP Is Nothing Then
MsgBox "kein Pfad aus Vorlage!", vbExclamation
Exit Sub
End If
sPath = Left$(CP, InStrRev(CP, "\"))
sName = Right$(CP, Len(CP) - InStrRev(CP, "\"))
With Tabelle1
sSaveFullName = sPath & .Range("H1").Value & .Range("L1").Value & ".xlsx"
End With
If Dir(sSaveFullName, vbNormal) <> "" Then
If MsgBox("Datei mit den Namen bereits vorhanden!" & vbCr & _
"Soll diese ersetzt werden?" & vbCr & _
sSaveFullName, vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
End If
Application.DisplayAlerts = False
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=sSaveFullName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Application.EnableEvents = True
Workbooks.Open sPath & sName
ThisWorkbook.Close False
End Sub
-
Führe das Makro aus, um die Datei im gleichen Ordner zu speichern.
Häufige Fehler und Lösungen
- Fehler beim Speichern: Wenn beim Ausführen des Makros ein Fehler auftritt, stelle sicher, dass die Vorlagedatei korrekt als Excel-Vorlage (.xlt oder .xltx) gespeichert ist.
- Pfad nicht gefunden: Überprüfe, ob der Pfad korrekt in der benutzerdefinierten Dokumenteigenschaft gespeichert wird.
- Datei existiert bereits: Das Makro fragt dich, ob du die bestehende Datei überschreiben möchtest. Achte darauf, dass du die richtige Auswahl triffst.
Alternative Methoden
Wenn du nicht mit einer Vorlage arbeiten möchtest, kannst du den Code anpassen, um die aktuelle Arbeitsmappe zu speichern. Hier ist ein alternativer Code:
Sub SaveSpezial()
Dim sPath$, sName$, sSaveFullName$
With ThisWorkbook
sPath = Left$(.FullName, InStrRev(.FullName, "\"))
sName = Right$(.FullName, Len(.FullName) - InStrRev(.FullName, "\"))
End With
With Tabelle1
sSaveFullName = sPath & .Range("H1").Value & .Range("L1").Value & ".xlsx"
End With
' Rest des Codes bleibt gleich
End Sub
Praktische Beispiele
- Beispiel mit Namen aus Zellen: Wenn du in Zelle H1 „Protokoll“ und in Zelle L1 „2023“ hast, wird die Datei als „Protokoll2023.xlsx“ gespeichert.
-
Schließen der gespeicherten Datei: Um die gespeicherte Datei direkt zu schließen, kannst du diesen Code am Ende des Makros hinzufügen:
Workbooks(sName).Close SaveChanges:=False
Tipps für Profis
- Verwende Fehlerbehandlungsroutinen: Um sicherzustellen, dass dein Makro auch bei unerwarteten Fehlern stabil bleibt.
- Testen im Entwicklermodus: Führe dein Makro im Entwicklermodus aus, um mögliche Fehler sofort zu erkennen.
- Dokumentation des Codes: Kommentiere deinen Code, um die Wartung und Verständlichkeit zu verbessern.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass das Makro im richtigen Ordner speichert?
Du kannst den Pfad der Vorlagedatei in einer benutzerdefinierten Dokumenteigenschaft speichern, um sicherzustellen, dass das Makro immer im richtigen Ordner speichert.
2. Was ist, wenn ich die Datei nicht als Vorlage speichern kann?
Falls du die Datei nicht als Vorlage speichern kannst, kannst du auch den alternativen Code verwenden, der nicht auf eine Vorlage angewiesen ist.
3. Kann ich das Makro auch in Excel Online verwenden?
VBA-Makros sind nicht in Excel Online verfügbar. Du musst die Desktop-Version von Excel verwenden.