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

Makro zeitverzögert ausführen

Forumthread: Makro zeitverzögert ausführen

Makro zeitverzögert ausführen
24.03.2009 10:05:01
Bjarne
Moin,
folgendes Problem:
Ich möchte zwei Makros ausführen. Makro 1 soll eine Datei öffnen, Makro 2 soll dann Tabellenblätter aus dieser kopieren und sie dann wieder schließen.
Die zwei Makros an sich funktionieren, wenn ich sie einzelnd und nacheinander ausführe. Will ich sie jedoch hintereinander ablaufenlassen, so öffnet er die Datei aber nischts weiter.
Das besondere bei der Datei die geöffnet wird ist, dass die Verknüpfungen erst aktualisiert werden müssen (läuft automatisch). Kann es sein, dass er sich deshalb irgendwo aufhängt bzw. nicht mehr die Tabellenblätter kopiert?
Grüße und vielen Dank für Antworten
Bjarne
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
zeitverzögert ...
24.03.2009 10:21:04
Matthias
Hallo
benutze Application.Wait Now+TimeSerial(0,0,n)
wobei n Deine variable Sekundenzeit ist.
also m Prinzip so:

Sub alleMakros()
makro1 'Ausführen Makro1
Application.Wait Now + TimeSerial(0, 0, 3) '3 sekunden Pause
makro2 'Ausführen Makro2
End Sub


Setze die Zeit immer höher bis es klappt.
Gruß Matthias

Anzeige
AW: Makro zeitverzögert ausführen
24.03.2009 10:43:14
Tino
Hallo,
ich würde Excel nicht die Luft zum atmen nehmen und
mit der Ausführung des zweiten Makros mittels OnTime eine gewisse Zeit warten.
Wird ein Makro anderes Makro ausgeführt, wartet die Ontime Methode bis dieses abgearbeitet ist.
Durch die zweite Zeitangabe wird sichergestellt, dass nach einer Minute dieses Makro nicht mehr ausgeführt werden darf. Die Zeiten musst Du entsprechend anpassen.
Sub StartMakro()

Application.OnTime Now + TimeSerial(0, 0, 2), "Makro2", Now + TimeSerial(0, 1, 0)
Call Makro1 'Ausführen Makro1 

End Sub

Sub Makro1()
Dim a As Long
For a = 1 To 6
 Application.Wait Now + TimeSerial(0, 0, 1)
Next a
End Sub

Sub Makro2()
 Debug.Print "Mach was anderes"
End Sub


Gruß Tino

Anzeige
AW: Makro zeitverzögert ausführen
24.03.2009 12:06:30
Bjarne
Moin,
vielen Dank für die Vorschläge!
Klappt wunderbar!!!
Anzeige

Infobox / Tutorial

Makro zeitverzögert ausführen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

Sub alleMakros()
    makro1 'Ausführen Makro1
    Application.Wait Now + TimeSerial(0, 0, 3) '3 Sekunden Pause
    makro2 'Ausführen Makro2
End Sub

Sub makro1()
    ' Hier kommt der Code für Makro1
End Sub

Sub makro2()
    ' Hier kommt der Code für Makro2
End Sub
  1. Passe die Zeit an:

    • Du kannst die Pause zwischen den Makros anpassen, indem du die Zahl in TimeSerial(0, 0, 3) änderst.
  2. Führe das Hauptmakro aus:

    • Du kannst das Makro alleMakros ausführen, um die beiden Makros zeitverzögert auszuführen.

Häufige Fehler und Lösungen

  • Makros werden nicht ausgeführt:

    • Stelle sicher, dass die Sicherheitsoptionen für Makros in Excel so eingestellt sind, dass Makros ausgeführt werden dürfen.
  • Zu lange Wartezeiten:

    • Wenn du eine zu lange Pause einstellst, könnte dies die Ausführung stören. Reduziere die Zeit und teste erneut.
  • Verknüpfungen aktualisieren:

    • Wenn dein Makro eine Datei öffnet, die Verknüpfungen hat, stelle sicher, dass diese aktualisiert werden, bevor das nächste Makro ausgeführt wird.

Alternative Methoden

Eine andere Möglichkeit, ein Excel-Makro zeitgesteuert auszuführen, ist die Verwendung der Application.OnTime Methode. Hier ein Beispiel:

Sub StartMakro()
    Application.OnTime Now + TimeSerial(0, 0, 2), "Makro2"
    Call Makro1 'Ausführen Makro1
End Sub

Mit Application.OnTime kannst du die Ausführung von Makros flexibel steuern und zeitverzögert arbeiten.


Praktische Beispiele

Nehmen wir an, du möchtest eine Datei öffnen und dann Daten kopieren. Hier ist ein einfaches Beispiel:

Sub alleMakros()
    Workbooks.Open "C:\Pfad\zu\deiner\Datei.xlsx"
    Application.Wait Now + TimeSerial(0, 0, 5) '5 Sekunden warten
    ' Kopiere die Daten hier
    ActiveWorkbook.Close SaveChanges:=False
End Sub

Dieses Beispiel öffnet eine Datei, wartet 5 Sekunden und schließt sie dann wieder.


Tipps für Profis

  • Nutze die DoEvents-Funktion, um Excel die Möglichkeit zu geben, andere Aufgaben während der Wartezeit zu erledigen.
  • Experimentiere mit verschiedenen Wartezeiten, um die optimalen Einstellungen für deine Makros zu finden.
  • Dokumentiere deinen Code gut, damit du später leichter verstehst, was jeder Teil des Makros macht.

FAQ: Häufige Fragen

1. Wie kann ich die Wartezeit dynamisch einstellen? Du kannst die Wartezeit in einer Variablen speichern und dann im Application.Wait oder Application.OnTime verwenden.

2. Funktioniert das auch in älteren Excel-Versionen? Ja, die vorgestellten Methoden sind in den meisten Excel-Versionen ab 2007 verfügbar. Achte darauf, dass VBA aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige