excelVba Datei mit anderem Namen + Datum speichern
per Makro, das wäre suuuper
Hallo Hans-Bärbel,
beim Start der Datei mußt du bei der Abfrage die dann kommen wird, auswählen Makros zu aktivieren sonst klappt es nicht.
Eine Macke hat der Code noch, in der neuen erzeugten Datei sind auch die Makros enthalten, wenn du die dann öffnest ist es Wurscht ob du makros aktivierst oder nicht.
Wegen diesem Schönheitsfehler frage ich gleich im Brett Tabllenkalkulation nach, denn in der erzeuugten datei muß ja kein makrocode sein. kannst ja den dortige Beitragsfolge beobachten und dann ggfs. den Code abzuändern.
Aber dieser Fehlr beeinträchtigt ja nicht die Funktionalität, es geht da einzig um die Vermeidung der Makroabfrage beim Start der Tagessicherungsdatei.
Solltest du mal Ändrungen am Code in Modul1 vorhaben, so wieder Alt+f11 und Doppelklick auf „Modul1“, ist es links nicht sichtbar, so klicke die Pluszeichen an vor dem projekt mit dem dateinamen oder auf das Pllus vor „Module“
Die erzeugte Datei hat den Namen: NameJJJJMMTT.xls, diese Reihenfolge (erst jahr, dann Monat usw.) hat den Vorteil, die Dateien sind im Ordner gleich richtig chronologisch sortiert wenn man nach Namen auflisten läßt, bei NameTTMMJJJJ ist das ja nicht der Fall.
Im Code mußt du die beiden Zeilen wo „Const“ vorne steht noch auf deinen Ordnernamen (achte auf das „“ am Schluß) und den Dateinamen der Originaldatei abändern.
Um die Codes einzugeben,
Alt+F11, Einfügen–Modul, in das Fenster den Code für Modul1 reinkopieren. die beiden Zeilen abändern.
Links auf „Diese Arbeitsmappe“ doppelklicken, den anderen Code reinkopieren, Editor schließen.
Wenn du nun die Originaldatei schließt, wird der Code ausgeführt. Schließt du an einem Tag die originaldatei mehrmals so wird die erezeugte Datei immer wieder überschrieben mit den aktuellen Daten der Originaldatei.
In Modul1
Option Explicit
'
Sub Speichern()
Dim Dateiname As String
Const Pfad As String = "c:\test\"
Const DieserName As String = "kwdoc.xls"
With ThisWorkbook
.Save
If .Name DieserName Then Exit Sub
Dateiname = Left(.Name, Len(.Name) - 4) & Format(Date, "yyyymmdd") & ".xls"
Application.DisplayAlerts = False
.SaveAs Filename:=Pfad & Dateiname
Application.DisplayAlerts = True
End With
End Sub
In DieseArbeitsmappe
Option Explicit
'
Private Sub Workbook\_BeforeClose(Cancel As Boolean)
Call Speichern
End Sub
Gruß
Reinhard