Makros nur einmal Täglich ausführen
#1
Moin moin

Zuerst mal ich habe nicht viel Erfahrung/wissen von Makros. Die Letzen Tage habe ich mich etwas eingearbeitet und mithilfe des Forums einiges hin bekommen.
Ich muss tägliche Berichte für meinen Job schreiben, dafür habe ich folgendes hin bekommen:
Kurz um: Ich öffne die Exel Datei, drücke STRG+Y . Es wird eine neue Mappe erstellt, ein leeres Formular wird dort eingefügt und das Aktuelle Datum in die Zeile "K4" eingefügt. Des weiteren wird der Name der Mappe ebenfalls in das aktuelle Datum geändert. So weit so gut.
Hier der Code:

--------------------------------------------
Sub Start_Bericht()
'
' Start_Bericht Makro
' Kopieren & Öffnen
'
' Tastenkombination: Strg+y
'
    Sheets("Start").Select
    Range("A1:N38").Select
    Selection.Copy
    Range("K4") = Date
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Paste
    ActiveSheet.Name = Range("K4")
End Sub
--------------------------------------------------------------------------------


Jetzt möchte ich gerne das der das Automatisch macht, sobald ich es öffne. Das habe ich zwar hin bekommen.
Aber wenn ich es 2 o. 3 mal am Tag öffne , eröffnet er jedes mal eine neue Mappe und es erscheint der Fehler das die Mappen nicht den selben Namen haben können. (Ist mir klar)
Also muss ich es hin bekommen das der erkennt, dass die Mappe bereits vorhanden ist. Dazu habe ich folgendes gefunden und probiert:
-------------------------------------------------------
Sub Nur_Einmal()
    If Sheets("01.01.2019").Range("K4") > Date Then
    MsgBox ("Das war für Heute das letzte mal")
    Else
    MsgBox ("Tschüss bis Morgen")
    End If
    Sheets("Tabelle1").Range("K4") = Date
End Sub
!!! Das ist fehlerhaft !!!
-------------------------------------
Private Sub Workbook_Open()
Call Nur_Einmal
Call Start_Bericht

End Sub
.............................
Das funktioniert aber nicht wirklich.
"If Sheets("01.01.2019").Range("K4") > Date Then" , ich weiß nicht wie ich nach dem "If Sheets" die Mappe betiteln soll. Mit einem Datum geht nicht (weil es ja jeden Tag sich ändert)

Ist es verständlich was ich möchte und wo mein Problem liegt?


mfg.: Tobias
Antworten Top
#2
Hi

Versuch mal den Code.
Code:
Sub Start_Bericht()
Dim BN As Worksheet

For Each BN In Worksheets
  If BN.Name = Date Then
      MsgBox "Blatt bereits vorhanden"
      Exit Sub
  End If
Next BN

With Sheets("Start")
    .Range("K4").Value = Date
    Sheets.Add After:=Sheets(Sheets.Count)
    .Range("A1:N38").Copy Range("A1")
    ActiveSheet.Name = Range("K4").Value
End With

End Sub


Gruß Elex
Antworten Top
#3
Danke, werde es testen

Funktioniert super, Vielen Dank!
mfg
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste