Expertenrat ist gefragt. Ich habe eine Beispieldatei, in der ich eine Vorlage erstellt habe. Aus dieser Vorlage soll sich jeden Tag automatisch ein neues Arbeitsblatt mit der Grundstruktur der Vorlage generieren. Dazu habe ich ein Makro geschrieben. Leider funktioniert das ganze jedoch nicht so, wie ich mir das vorstelle. Kann mir bitte jemand weiterhelfen?
ich denke so muss der Code jetzt funktionieren. Bitte testen ....
mfg Gast 123
Code:
Sub Datenblatt_Heute() Dim DatumHeute As String Dim Sht As Worksheet 'NeuesDatenblatt Makro
' Neues Datenblatt mit heutigem Datum einfügen On Error Resume Next DatumHeute = CStr(Sheets("Vorlage").Range("E1")) Set Sht = Worksheets(DatumHeute)
If Not Sht Is Nothing Then MsgBox DatumHeute & " dieses Blatt existiert bereits": Exit Sub End If
Application.ScreenUpdating = False Sheets("Vorlage").Copy After:=Sheets("Vorlage") ' Name des neuen Datenblattes in in das heutige Datum ändern Sheets("Vorlage (2)").Name = DatumHeute End Sub
vielen Dank für deine Antwort. Ich habe den Code kopiert und in meine Datei eingefügt. Leider funktioniert das aber nicht so wie gewünscht. Mein Ziel ist, dass Excel sofort beim Öffnen der Datei ein neues Arbeitsblatt aus der Vorlage generiert. Das passiert aber nicht. Wenn ich den Code im einzelnen mit F8 durchspiele, macht Excel dass im letzten Arbeitsschritt. Aber nicht von allein, ohne das Makro geöffnet zu haben.
Siehe selbst.
Makro-Test.xlsm (Größe: 25,04 KB / Downloads: 3)
Woran kann das liegen?
Sorry, mein Fehler, nicht richtig gelesen. Korrigieren wir es. Lade den unteren Code in das Blatt "This Workbook" Gestarte wird das Makro dann über die Auto-Open Funktion von Excel. Die Msgbox habe ich heir weggelassen.
mfg Gast 123
Code:
Private Sub Workbook_Open() Dim DatumHeute As String Dim Sht As Worksheet ' Neues Datenblatt mit heutigem Datum einfügen On Error Resume Next DatumHeute = CStr(Sheets("Vorlage").Range("E1")) Set Sht = Worksheets(DatumHeute)
'stiller Aussprung wenn Sheet bereits existiert! If Not Sht Is Nothing Then Exit Sub
Application.ScreenUpdating = False Sheets("Vorlage").Copy After:=Sheets("Vorlage") ' Name des neuen Datenblattes in in das heutige Datum ändern Sheets("Vorlage (2)").Name = DatumHeute End Sub
eine Frage ist im Nachgang nochmal aufgekommen. Wenn ich die Arbeitsmappe über einen großen Zeitraum hinweg nutze, können da schon sehr viele Arbeitsblätter zusammenkommen.
Weißt du, wie ich den Code umschreiben muss (oder auch gern separat), damit Excel bspw. alle 3 Monate oder alle halbe Jahr die Arbeitsblätter aus der aktuellen Arbeitsmappe entfernt und in einer Art Datenarchiv abspeichert?
kann man je nach Umfang auch jeden Monat oder alle zwei Monate machen. Da bin ich aber eher Faul!! Die aktuelle Datei in den Namen umbenennen, unter dem sie im Archiv bleiben soll und ins Archiv schieben. Neu öffnen. Das Blatt "Vorlage" kopieren und in eine neue Datei verschieben. Diese dann als neue Vorlage speichern. Fertig
kein Problem. Leider habe ich erneut ein Problem. Und zwar habe ich nun 2 Vorlagen, und ich möchte, dass Excel für jede Vorlage ein Datenblatt mit EinkaufDatumHeute und VerkaufDatumHeute erstellt. Ich habe schon ein wenig versucht, doch leider ohne Erfolg.
Kannst du mir den Code dementsprechend umschreiben, oder muss ich die Arbeitsblätter in separaten Dateien abspeichern?
kein Problem, das geht auch mit zwei Vorlagen. Im Modul "ThisWorbook" sind ganz oben zwei Const Anweisungen. Da kannst du den Text wie das neue Blatt heissen soll selbst festlegen. Zur Zeit: "Einkauf" und "Verkauf" mit Datum.