Dateinamen aus einer Zelle in Excel VBA erstellen
Schritt-für-Schritt-Anleitung
Um einen Dateinamen aus einer Zelle in Excel VBA zu erstellen, gehe folgendermaßen vor:
-
Öffne Excel und erstelle ein neues Makro.
-
Kopiere den folgenden VBA-Code in das VBA-Editor-Fenster:
Sub SpeichernAls()
Dim Dname As String
Dname = "N:\A\B\C\" & Worksheets("Tabelle1").Range("C1050").Value
ThisWorkbook.SaveAs Filename:=Dname, FileFormat:=52
End Sub
-
Passe den Tabellenblattnamen ("Tabelle1") und die Zelle ("C1050") entsprechend deiner Datei an.
-
Führe das Makro aus, um die Arbeitsmappe mit dem Dateinamen aus der angegebenen Zelle zu speichern.
Häufige Fehler und Lösungen
-
Fehler beim Speichern: Wenn das Makro nicht funktioniert, überprüfe, ob der Pfad "N:\A\B\C\" korrekt ist und ob du die nötigen Berechtigungen hast.
-
FileFormat nicht angegeben: Achte darauf, dass du das FileFormat
-Argument angibst, da dies ab Excel 2007 erforderlich ist. Für .xlsm-Dateien ist der Wert 52
.
ThisWorkbook.SaveAs Filename:=Dname, FileFormat:=52
-
Ungültiger Dateiname: Stelle sicher, dass der Inhalt der Zelle "C1050" einen gültigen Dateinamen darstellt, ohne unerlaubte Zeichen.
Alternative Methoden
Wenn du eine andere Methode nutzen möchtest, um den Dateinamen aus einer Zelle zu generieren, kannst du auch den folgenden Ansatz verwenden. Dieser nutzt die GetSaveAsFilename
-Methode:
Sub SaveAs()
Dim savedFile As Variant
savedFile = Application.GetSaveAsFilename(InitialFileName:="N:\A\B\C\" & Worksheets("Tabelle1").Range("C1050").Value, fileFilter:="Excel-Arbeitsmappe, *.xlsm")
If savedFile <> False Then ActiveWorkbook.SaveAs savedFile, FileFormat:=52
End Sub
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du Excel VBA verwenden kannst, um Dateinamen aus Zellen zu generieren:
-
Initialen aus einem Namen: Wenn du die Initialen aus einem Namen in Zelle "A1" extrahieren und als Dateinamen verwenden möchtest:
Sub InitialenSpeichern()
Dim Name As String
Dim Initialen As String
Name = Worksheets("Tabelle1").Range("A1").Value
Initialen = Left(Name, 1) & Mid(Name, InStr(Name, " ") + 1, 1)
ThisWorkbook.SaveAs Filename:="N:\A\B\C\" & Initialen & ".xlsm", FileFormat:=52
End Sub
-
Dynamische Dateinamen: Du kannst auch das aktuelle Datum in den Dateinamen einfügen:
Sub SpeichernMitDatum()
Dim Dname As String
Dname = "N:\A\B\C\" & Worksheets("Tabelle1").Range("C1050").Value & "_" & Format(Date, "YYYYMMDD") & ".xlsm"
ThisWorkbook.SaveAs Filename:=Dname, FileFormat:=52
End Sub
Tipps für Profis
-
Verwende Konstanten: Definiere Konstanten für oft verwendete Dateipfade, um deinen Code lesbarer zu machen.
Const FilePath As String = "N:\A\B\C\"
-
Fehlerbehandlung: Implementiere Fehlerbehandlung, um den Code robuster zu machen. Zum Beispiel:
On Error Resume Next
ThisWorkbook.SaveAs Filename:=Dname, FileFormat:=52
If Err.Number <> 0 Then MsgBox "Fehler beim Speichern: " & Err.Description
On Error GoTo 0
FAQ: Häufige Fragen
1. Warum sollte ich GetSaveAsFilename
verwenden?
GetSaveAsFilename
ermöglicht es dem Benutzer, den Speicherort und den Dateinamen auszuwählen, bevor die Datei gespeichert wird. Dies ist nützlich, wenn du den Speicherort nicht im Voraus festlegen möchtest.
2. Was mache ich, wenn mein Makro in Excel 2013 nicht funktioniert?
Überprüfe, ob alle erforderlichen Parameter, insbesondere FileFormat
, korrekt angegeben sind. Stelle sicher, dass der Code auch auf die richtige Excel-Version abgestimmt ist, da sich die Anforderungen in verschiedenen Versionen ändern können.