Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problem bei Start mit Aufgabenplanung

Forumthread: Problem bei Start mit Aufgabenplanung

Problem bei Start mit Aufgabenplanung
06.01.2017 16:12:29
Peter
Hallo,
leider habe ich im Archiv nicht das passende gefunden.
Ich habe eine Excel .xlsm - Datei und öffne diese mittels Aufgabenplanung. Dies funktioniert soweit einwandfrei.
Das Problem ist jedoch das Öffnen und schliessen.
Ich möchte, wenn die Datei per Aufgabenplanung öffnet, dass ein bestimmtes Makro ausgeführt wird und anschliessend die Datei geschlossen wird.
Wird die Datei jedoch manuell geöffnet, soll die Userform geöffnet werden.
Wie kann ich das bitte über Workbook_Open deklarieren.
Danke für Eure Hilfe.
Gruss
Peter
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem bei Start mit Aufgabenplanung
06.01.2017 17:53:28
Michael
Hi,
erstelle Dir eine Batchdatei zum Öffnen, die Du dann in der Aufgabenplanung aufrufst (habe hier bei "Parameter" einen Tippfehler)(^Z ist Strg+z oder die F6-Taste, dann Enter):
Userbild
Hier verwendest Du natürlich statt "Parameter_Start.xlsm" Deinen Dateinamen.
Der untere Befehl erzeugt eine Mini-Textdatei "manuell.txt". Das muß natürlich nur einmal ausgeführt werden, sie wird ja nicht gelöscht, nur die Kopie...
Die wird in der ersten .bat vor dem Starten der Exceldatei auf "automatisch.txt" kopiert, was dann vom Makro ausgewertet wird:
Option Explicit
Private Sub Workbook_Open()
If Dir(ThisWorkbook.Path & "\automatisch.txt") = "" Then
MsgBox "händisch gestartet"
Else
Kill ThisWorkbook.Path & "\automatisch.txt"
MsgBox "via .BAT gestartet"
End If
End Sub

Wenn die denn vorhanden ist, löscht man sie am besten sofort wieder.
Schöne Grüße,
Michael
Anzeige
AW: Problem noch vorhanden
06.01.2017 18:20:52
Peter
Hallo Michael,
besten Dank für Deine Hilfe.
Leider klappt das noch nicht ganz. Schau Dir doch bitte mal meine Daten an:
Option Explicit
Private Sub Workbook_Open()
If Dir(ThisWorkbook.Path & "\automatisch.txt") = "" Then
MsgBox "händisch gestartet"
Else
Kill ThisWorkbook.Path & "\automatisch.txt"
MsgBox "via .BAT gestartet"
End If
End Sub
Bat-Datei:
C:\Users\Peter\Desktop>copy con Mappe_Passwort.bat
copy manell.txt automatisch.txt
start Mappe_Passwort.xlsm
1 Datei kopiert.
C:\Users\Peter\Desktop>copy con manuell.txt
bla^Z
1 Datei kopiert.
C:\Users\Peter\Desktop>
Es kommt sowohl beim Öffnen über die Bat als auch beim Händischen Öffnen die gleiche Meldung:
Händisch gestartet.
Gruss
Peter
Anzeige
AW: Problem noch vorhanden
06.01.2017 19:55:12
Michael
Hi,
bei mir hat's funktioniert; sollte nicht irgendwas ganz Schräges dahinterstecken, vermute ich mal, daß die Excel-Datei nicht an dem angegebenen Pfad liegt, sondern woanders.
Du kannst Dir ja zwischendrin mal msgbox thisworkbook.path ausgeben lassen, sofern Du diese Idee überhaupt weiterverfolgen möchtest.
Schöne Grüße,
Michael
Anzeige
AW: Problem noch vorhanden
07.01.2017 06:20:04
Peter
Guten Morgen Michael,
habe den Pfad überprüft - i. O.. Habe die Datei nochmals händisch geöffnet und einmal über durch Start von Batchdatei. Über die Aufgabenverwaltung funktioniert es leider auch nicht.
Keine Ahnung wo hier der Fehler liegt.
Vielleicht hast Du noch einen Rat für mich.
Gruss
Peter
Anzeige
AW: Problem bei Start mit Aufgabenplanung
06.01.2017 18:17:14
Daniel
HI
Das Workbook.Open wird es wahrscheinlich nicht erkennen, von wem es geöffnet wird.
Wenn deine Aufgabenplanung die Datei immer zu eine bestimmten Uhrzeit öffnet, dann könntest du diese Uhrzeit abfragen, ob die Userform geöffnet oder das Makro gestartet werden soll:
Private Sub Workbook_Open()
If Time > TimeValue("07:59") And Time 

und noch ein Tipp:
Wenn du über WorkbookOpen ein Makro startest oder eine Userform öffnest, dann solltest du die Makros dazu mit Application.Ontime NOW, Macroname starten.
mit OnTime aufgerufene Makros werden erst gestartet, wenn alle aktuell laufenden Prozesse abgeschlossen sind. dh diese Makros laufen dann NACH dem WorkbookOpen-Prozess.
Rufst du die Makros jedoch mit Call auf oder startest sie direkt, dann laufen sie WÄHREND dem WorkbookOpen-Prozess und das kann zu Problemen und Instablilitäten führen. Bspw ist es Problematisch, eine Datei zu schließen, die noch gar nicht vollständig geöffnet ist.
Gruß Daniel
Anzeige
AW: Problem bei Start mit Aufgabenplanung
06.01.2017 18:38:21
Peter
Hallo Daniel,
besten Dank für Deine Hilfe.
Da ich noch nicht mit Aufgabenplanung gearbeitet habe, kenne ich mich hier nicht so genau aus.
Die Einstellung in der Aufgabenplanung ist monatlich 1. Tag Startzeit 8:00 Uhr. Insoweit wäre ja alles in Ordnung. Was geschieht jedoch, wenn der PC erst um 9:00 Uhr eingeschaltet wird oder gar erst Tage später?
Kann Excel ggf. auf die Aufgabenplanung zugreifen?
Gruss
Peter
Anzeige
AW: Problem bei Start mit Aufgabenplanung
06.01.2017 19:02:27
Daniel
Hi
das verwirrt mich jetzt aber etwas.
ich dachte du arbeitest schon mit der Aufgabenplanung.
aber wenn ich dich richtig verstehe, dann ist die eigentliche Aufgabenschtellung eine etwas andere.
du möchtest, dass wenn du die Datei im neuen Monat das erste mal öffnest, ein bestimmtes Makro läuft bevor du anfängst zu arbeiten. Später soll das Makro nicht mehr ausgeführt werden, sodern erst wieder im neuen Monat.
das lässt sich einfach realiseren:
suche dir auf einer Tabelle eine freie Zelle z.B. Tabelle1!A1
in diese Zelle schreib dein Makro, wenn es ausgeführt wird, das aktuelle Datum:
Tabelle1.Range("A1").Value = Now
Im WorkbookOpen-Event fragst du dann einfach den Monat dieses Datums ab und vergleichst ihn mit dem aktuellen Monat. Unterscheiden sie sich, führst du das Makro aus:
If Month(Tabelle1.Range("A1").Value)  Month(Date) Then Call DeinMakro
Gruß Daniel
Anzeige
AW: Problem gelöst
07.01.2017 06:42:59
Peter
Hallo Daniel,
Guten Morgen.
Habe das Problem gelöst mit Deinem vorherigen Vorschlag.
Das mit der zweiten Userform klappt einwandfrei.
Werde das jetzt in die Orginaldatei einrichten.
Sollte widererwarten etwas nicht klappen, werde ich Dich um Hilfe bitten.
Wünsche Dir ein schönes Wochenende.
Gruss
Peter
Anzeige
AW: Problem bei Start mit Aufgabenplanung
06.01.2017 18:38:21
Daniel
und noch ne Idee:
Im Workbook_Open-Event startest du das Makro über application.Ontime mit einer verzögerung von 30 sekunden. Die Startzeit merkst du dir in einer Projektweit gültigen Variablen
(muss in einem allgemeinen Modul mit Public oberhalb der Makros deklariert werden)
dann startets du ebenfalls über Application.OnTime eine weitere Userform mit einem OK-Button.
bei Klick auf den OK-Button rufst du dann das Application.Ontime für das Makro zurück, so daß es nicht ausgeführt wird und startest die eigentliche Userform.
sieht als Code so aus:
im Modul DieseArbeitsmappe:
Private Sub Workbook_Open()
StartZeit = Now + TimeSerial(0, 0, 30)
Application.OnTime StartZeit, "DeinMakro"
Application.OnTime Now, "UserForm1Zeigen"
End Sub
im Modul 1
Option Explicit
Public StartZeit As Date
Sub UserForm1Zeigen()
UserForm1.Show 0
End Sub
Sub DeinMakro()
Unload UserForm1
'...hier dein Code
ThisWorkbook.Save
ThisWorkbook.Close
End Sub
in der Userform1
Private Sub CommandButton1_Click()
Application.OnTime StartZeit, "DeinMakro", schedule:=False
Unload Me
UserForm2.Show
End Sub
du musst dann innerhalb von 30 Sekunden (oder je nachdem) bestätigen, dass du die Datei manuell geöffnet hast, ansonsten wird das Makro ausgeführt und die Datei geschlossen.
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Aufgabenplanung in Excel: So automatisierst Du Deine Makros


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Batch-Datei: Diese Datei wird verwendet, um Deine Excel-Datei über die Aufgabenplanung zu starten. Der Inhalt könnte wie folgt aussehen:

    copy con manuell.txt
    bla^Z
    copy manuell.txt automatisch.txt
    start DeineDatei.xlsm
  2. Füge das Workbook_Open-Ereignis hinzu: In Deinem Excel VBA-Editor kannst Du den folgenden Code in das DieseArbeitsmappe-Modul einfügen:

    Option Explicit
    Private Sub Workbook_Open()
       If Dir(ThisWorkbook.Path & "\automatisch.txt") = "" Then
           MsgBox "händisch gestartet"
       Else
           Kill ThisWorkbook.Path & "\automatisch.txt"
           MsgBox "via .BAT gestartet"
       End If
    End Sub
  3. Zugriff auf die Aufgabenplanung: Gehe zur Aufgabenplanung und erstelle eine neue Aufgabe. Stelle sicher, dass Du die Batch-Datei wählst, die Du in Schritt 1 erstellt hast.

  4. Überprüfe den Pfad: Stelle sicher, dass die Excel-Datei im richtigen Verzeichnis liegt. Du kannst den Pfad mit MsgBox ThisWorkbook.Path während der Ausführung überprüfen.

  5. Testen der Automatisierung: Öffne die Excel-Datei manuell sowie über die Aufgabenplanung, um sicherzustellen, dass das Makro wie gewünscht ausgeführt wird.


Häufige Fehler und Lösungen

  • Fehler: "Händisch gestartet" erscheint immer: Überprüfe, ob die automatisch.txt-Datei tatsächlich im gleichen Verzeichnis wie Deine Excel-Datei erstellt wird. Achte darauf, dass die Batch-Datei korrekt ausgeführt wird.

  • Fehler: Das Makro wird nicht ausgeführt: Stelle sicher, dass Du die Startzeit in der Aufgabenplanung korrekt eingestellt hast. Wenn der PC nicht zur geplanten Zeit eingeschaltet ist, wird die Aufgabe möglicherweise nicht ausgeführt.


Alternative Methoden

  • Verwendung von Application.OnTime: Statt das Makro sofort auszuführen, kannst Du es mit einer Verzögerung starten, indem Du den Application.OnTime-Befehl verwendest. Dies ist nützlich, um sicherzustellen, dass Excel vollständig geöffnet ist, bevor das Makro ausgeführt wird.

    StartZeit = Now + TimeSerial(0, 0, 30)
    Application.OnTime StartZeit, "DeinMakro"
  • Userforms nutzen: Du kannst Userforms verwenden, um den Benutzer zu fragen, ob das Makro ausgeführt werden soll. Dies kann helfen, unbeabsichtigte Ausführungen zu vermeiden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du ein Makro nur am ersten Tag des Monats ausführen kannst:

Private Sub Workbook_Open()
    If Day(Date) = 1 Then
        Call DeinMakro
    End If
End Sub

In diesem Beispiel wird das Makro DeinMakro nur ausgeführt, wenn die Excel-Datei am 1. des Monats geöffnet wird.


Tipps für Profis

  • Vermeide zu viele MsgBoxen: Diese können den Ablauf stören. Nutze stattdessen Protokolldateien oder Statuszellen in Excel zur Fehlerdiagnose.

  • Testumgebung nutzen: Teste Deine Automatisierungen immer in einer separaten Datei, bevor Du sie auf Deine Hauptarbeitsmappe anwendest.


FAQ: Häufige Fragen

1. Was passiert, wenn der PC nicht zur geplanten Zeit eingeschaltet ist?
Wenn der PC zur geplanten Startzeit nicht eingeschaltet ist, wird die Aufgabe nicht ausgeführt. Du kannst die Aufgabenplanung so einstellen, dass sie beim nächsten Einschalten des PCs ausgeführt wird.

2. Kann ich mehrere Makros gleichzeitig starten?
Ja, Du kannst mehrere Makros nacheinander ausführen, indem Du sie in der Workbook_Open-Prozedur oder über Application.OnTime aufrufst.

3. Wie kann ich die Aufgabenplanung für Excel automatisieren?
Indem Du Batch-Dateien und VBA-Makros kombinierst, kannst Du die Aufgabenplanung in Excel automatisieren und sicherstellen, dass bestimmte Aktionen zur festgelegten Zeit ausgeführt werden.

4. Was sind die Vorteile der Verwendung von Userforms?
Userforms bieten eine benutzerfreundliche Möglichkeit, mit dem Benutzer zu interagieren und Entscheidungen zu treffen, bevor ein Makro ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige