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

Dateinamen per Makro beim speichern vorgeben | Herbers Excel-Forum

Forumthread: Dateinamen per Makro beim speichern vorgeben

Dateinamen per Makro beim speichern vorgeben
26.01.2010 08:04:44
Thomas

Hallo Forum,
ich möchte beim speichern einer Excelmappe den Typ (xlsm) und ebenfalls den Dateinamen schon vorgeben. Das ist mir auch einigermassen gelungen, aber ich bin mit dem Endergebnis noch nicht so zufrieden.
Der Dateiname soll sich zusammensetzen aus "KL" + Leerzeichen + aktueller Monat [hier ist das Problem] und einer laufenden 4 stelligen Nummer. Der Monat soll dabei aber 2 Stellen haben, also bis einschliesslich September muss eine 0 davor [ z.B. 02 (Februar);09 (September)] und ab Oktober soll nur der Monat geschrieben werden, da der ja ohnehin 2stellig ist. Wie kann ich das ändern (siehe mein Makro)

Private Sub CommandButton1_Click()
Dim strVerzeichnis As String
Dim strDateiname As String
strVerzeichnis = "\\sv42159bub9005\buck\Daten\Projekte\"
strDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & _
"KL" & " " & Right(Year(Date), 2) & "." & Month(Date) & "xxxx" & ".xlsm", _
FileFilter:="Microsoft Excel-Arbeitsmappe mit Makros (*.xlsm), *.xlsm")
Select Case strDateiname
Case False
Exit Sub
Case Else
ThisWorkbook.SaveAs Filename:=strDateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Select
End Sub
Zusätzlich möchte ich, dass die laufende Nummer aus einem anderen Excelblatt (liegt im Netzwerk auf einem anderen Server) abgefragt wird. Es soll einfach der letzte Eintrag in Spalte B (Tabelle1) ausgelesen und + 1 addiert werden. Das Makro müsste also abfragen, in welcher Zeile sich der letzte Eintrag in Spalte B befindet und einfach 1 dazuaddieren.
Gesamt soll das dann den Dateinamen bilden. Bsp: KL 10.01.2348.xlsm (Jahr.Monat.4stellige_laufende_Nr.xlsm)
Wer kann mir behilflich sein?
Vielen Dank.
Gruß Thomas

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateinamen per Makro beim speichern vorgeben
26.01.2010 08:09:15
Hajo_Zi
Hallo Tomas,
"KL" & " " & Format(Date, "yy") & "." & Format(Date,"mm") & "xxxx" & ".xlsm"

AW: Dateinamen per Makro beim speichern vorgeben
26.01.2010 08:35:34
Thomas
danke hajo,
habe auch schon mit Format herumexperimentiert, mein Fehler war, dass ich das Jahr YY nicht in Anführungszeichen geschrieben hatte.
Hat jemand eine Lösung zum zweiten Teil des Problems, dem auslesen des letzten Eintrages der Spalte B von Tabelle1 einer anderen Exceldatei??
Danke für die Hilfe
Thomas
Anzeige
AW: Dateinamen per Makro beim speichern vorgeben
26.01.2010 08:38:54
Hajo_Zi
Hallo Thomas,
die Letzte Zelle einer Spalte
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
und dann ist es ja nur Cells(loletzte,2) oder Range("B"& loletzte)
Gruß Hajo
Anzeige
;
Anzeige

Infobox / Tutorial

Dateinamen per Makro beim Speichern in Excel vorgeben


Schritt-für-Schritt-Anleitung

Um beim Speichern einer Excel-Datei den Dateinamen per Makro vorzugeben, kannst Du das folgende VBA-Skript verwenden. Es wird gezeigt, wie Du den Dateinamen im gewünschten Format generierst und die laufende Nummer aus einer anderen Excel-Datei ausliest.

  1. Öffne den VBA-Editor in Excel mit ALT + F11.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Private Sub CommandButton1_Click()
    Dim strVerzeichnis As String
    Dim strDateiname As String
    Dim loLetzte As Long
    Dim laufendeNr As Long

    ' Verzeichnis definieren
    strVerzeichnis = "\\sv42159bub9005\buck\Daten\Projekte\"

    ' Laufende Nummer aus einer anderen Excel-Datei auslesen
    ' Hier musst Du den Pfad zur anderen Datei anpassen
    Dim wb As Workbook
    Set wb = Workbooks.Open("\\andererServer\Pfad\zu\deinerDatei.xlsx")

    loLetzte = IIf(IsEmpty(wb.Sheets("Tabelle1").Cells(Rows.Count, 2)), 1, wb.Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row)
    laufendeNr = wb.Sheets("Tabelle1").Cells(loLetzte, 2).Value + 1

    ' Dateinamen generieren
    strDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & _
    "KL" & " " & Format(Date, "yy") & "." & Format(Date, "mm") & laufendeNr & ".xlsm", _
    FileFilter:="Microsoft Excel-Arbeitsmappe mit Makros (*.xlsm), *.xlsm")

    Select Case strDateiname
        Case False
            Exit Sub
        Case Else
            ThisWorkbook.SaveAs Filename:=strDateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    End Select

    ' Schließe das Workbook nach dem Auslesen
    wb.Close SaveChanges:=False
End Sub
  1. Passe den Pfad zur Excel-Datei an, aus der Du die laufende Nummer ablesen möchtest.
  2. Schließe den VBA-Editor und teste das Makro.

Häufige Fehler und Lösungen

  • Fehler: "Die Datei konnte nicht gefunden werden."

    • Lösung: Stelle sicher, dass der Pfad zur anderen Excel-Datei korrekt ist und die Datei geöffnet werden kann.
  • Fehler: "Der Dateiname ist ungültig."

    • Lösung: Überprüfe, ob der Dateiname korrekt formatiert ist und keine ungültigen Zeichen enthält.

Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch die Funktion „Speichern unter“ manuell nutzen. Allerdings ist es weniger automatisiert und erfordert mehr manuelle Eingaben.


Praktische Beispiele

Ein Beispiel für einen generierten Dateinamen könnte wie folgt aussehen:

  • KL 23.10.2348.xlsm
    • Hierbei steht 23 für das Jahr, 10 für den Oktober und 2348 für die laufende Nummer, die aus der anderen Datei abgerufen wird.

Tipps für Profis

  • Nutze die Application.OnTime-Methode, um das Makro regelmäßig zu automatisieren.
  • Stelle sicher, dass Du alle Fehlerbehandlungen implementierst, um unerwartete Abstürze zu vermeiden.
  • Teste Dein Makro gründlich in einer sicheren Umgebung, bevor Du es in der produktiven Umgebung verwendest.

FAQ: Häufige Fragen

1. Kann ich den Dateinamen anpassen, um weitere Informationen hinzuzufügen?
Ja, Du kannst den Code anpassen, um weitere Variablen wie den Projektnamen oder das Datum hinzuzufügen.

2. Wie kann ich die laufende Nummer zurücksetzen?
Du kannst den Wert in der entsprechenden Zelle in der Excel-Datei manuell zurücksetzen oder ein weiteres Makro schreiben, um dies automatisch zu tun.

3. Funktioniert dieser Code in älteren Excel-Versionen?
Das Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren. Stelle sicher, dass die VBA-Syntax korrekt ist und die verwendeten Funktionen unterstützt werden.

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