254 Aufrufe
Gefragt in Tabellenkalkulation von peters Mitglied (460 Punkte)
Hallo,

ich habe eine Tabellenvorlage. Wenn diese genutzt wird, wird logischerweise eine neue Tabelle ohne Namen erstellt.

In A1 ist z.B. "01.01.2022" eingetragen.

Ich möchte nun per Makro aus diesem Feld das Jahr und den Monat ermiteln und die Datei im aktuellen Verzeichnis abspeichern mit diesem Namen "2022-02.xlsm"

Dürfte doch eigentlich kein Problem sein, oder? Ich breche mir dabei gerade einen ab,,,

Gruß

Peter

7 Antworten

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

müsste der Dateiname beim Datum 01.01.2022 nicht 2022-01.xlsm heißen??

Den Namen kannst du mit Year und Month ermitteln. Hier mal ein kleiner Beispielcode, der aus dem Datum aus der Zelle A1 der gerade aktiven Tabelle den Dateinamen ermittelt und die Datei entsprechend speichert:

Sub speichern_unter()

Dim strDateiname As String

'Pfad in Dateiname schreiben und Backslash ergänzen - Achtung Ursprungsdatei muss gespeichert sein
strDateiname = ThisWorkbook.Path & "\"

'Dateiname aus Jahr und Monat ermitteln
If Month(Range("A1").Value) < 10 Then
  'für die Monate Januar bis September eine Null vor dem Monat einfügen
  strDateiname = strDateiname & Year(Range("A1").Value) & "-0" & Month(Range("A1").Value) & ".xlsm"
 Else
  strDateiname = strDateiname & Year(Range("A1").Value) & "-" & Month(Range("A1").Value) & ".xlsm"
End If

'Datei unter neuem Namen speichern speichern
ThisWorkbook.SaveAs strDateiname

End Sub

Voraussetzung ist natürlich, dass die Tabelle bereits abgespeichert ist.

Gruß

M.O.

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo MO,

das war wieder eine Punktlandung! Danke.

Die letzte Code-Zeile habe ich wie folgt abgewandelt:

ActiveWorkbook.SaveAs strDateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Damit brauchte die Datei nicht mehr vorher gespeichert sein und auftretende Fehlermeldungen bzgl. des VB-Projekts und enthaltender Makros entfallen damit.

Gruß

Peter

P.S.: Natürlich sollte es 2022-01.xlsm heißen; nur ein kleiner Tippfehler.
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo MO,

da fällt mir noch etwas ein:

Lässt sich in dem Makro abfragen, ob eine Datei mit dem gewünschten Namen bereits existiert?

Ich würde dann gern die Abfrage, ob die bereits bestehende Datei überschrieben werden soll umgehen und durch eine einfache Meldung ersetzen (letzteres bekomme ich hin).

Damit wäre die Gefahr gebannt, dass die Datei überschrieben wird, denn ein einfaches Anklicken von "Ja" in der Excel-Abfrage ist schnell geklickt und dann wäre evtl. eine Menge Arbeit in der Datei futsch.

Gruß

Peter
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)

Hallo nochmal,

habe den letzten Punkt selbst hinbekommen mit

'Prüfung, ob Datei bereits existiert
If Dir(strDateiname) <> "" Then GoTo GibtEsSchon

Gruß

Peter

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Guten Morgen,

verflixt! Das klappt doch nicht!
Gestern funzte das Ganze und heute (ohne bewusste Änderungen) dann doch nicht mehr.

Das Problem ist das Auslesen des aktuellen Pfades.

Ich erstelle eine neue Datei mittels Aufruf einer Dokumentvorlage.
Die Dokumentvorlage ist logischerweise gespeichert, das neue Dokument aber nicht - "schwebt also im luftleeren Raum".

Gibt es eine Möglichkeit, die Pfadangabe der Dokumentvorlage an die neu erstellte Datei zu übergeben?

Sonst bliebe ja nur eine Harcodierung eines Pfades, was aber weniger elegant wäre.

Gruß

Peter
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Peter,

im Gegensatz zu WORD kannst du bei EXCEL nicht den Pfad der Dokumentvorlage ermitteln.

Gruß

M.O.
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo MO,

danke für die Antwort (auch wenn sie mir natürlich nicht gefällt  ;-)

Gruß

Peter
...