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

Forumthread: Abfrage "VBA macro beendet?"

Abfrage "VBA macro beendet?"
12.06.2005 18:19:58
Babs
Hallo,
ich befinde mich in einem Excel-VBA-Macro und rufe von dort aus eine WordApplikation auf und starte dort ein Word-VBA-Macro. Nachdem das zu Ende ist, geht es im Excel weiter. Da die Anwendung im Word mit etwas Zeit verbunden ist, kommen immer Laufzeitfehler mit dem Inhalt, dass Excel auf die andere Anwendung wartet. Wie kann ich abfragen, ob das entsprechende Word-Macro beendet ist, bevor ich dann wieder die Excel-Applikation aktiviere und dort weiter gehe in den Anweisungen?
Danke
Babs
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abfrage "VBA macro beendet?"
13.06.2005 17:26:24
Nepumuk
Hallo Babs,
ich habe etwas überlegen müssen, welches die für die am leichtesten nachvollziehbare Methode wäre. Dass einfachste ist, du lässt am Ende deines Wordmakros einer leere Textdatei erstellen. Excel wartet so lange, bis die Textdatei angelegt ist, oder eine gewisse Zeit überschritten würde, falls es Probleme beim Wordmakro gab.
Ergänze dein Wordmakro so:
Public Sub Wordmakro()
    
    ' Hier dein Code des Wordmakros
    
    Reset
    Open "C:\MakroFertig.txt" For Output As #1
    Close #1
End Sub

Und das Excelmakro so:
Private Declare Sub Sleep Lib "kernel32.dll" ( _
    ByVal dwMilliseconds As Long)

Public Sub Excelmakro()
    Dim intCount As Integer
    If Dir$("C:\MakroFertig.txt") <> "" Then Kill ("C:\MakroFertig.txt")
    
    ' Hier dein Code des Excelmakros welches Word startet
    
    Do
        Sleep 1000 'eine Sekunde warten
        intCount = intCount + 1
    Loop Until Dir$("C:\MakroFertig.txt") <> "" Or intCount = 30 ' ~ 30 Sekunden
    If Dir$("C:\MakroFertig.txt") <> "" Then Kill ("C:\MakroFertig.txt")
    
    ' Hier ist entweder das Wordmakro beendet oder 30 Sekunden Wartezeit überschritten
    
    ' Abbruchmöglichkeit wenn 30 Sekunden Wartezeit überschritten
    
    If intCount = 30 Then If MsgBox("Timeout des Wordmakros." & vbLf & vbLf & _
        "Programm fortsetzen?", 17, "Warnung") = 2 Then End
    
    ' Hier geht dein Code weiter
    
End Sub

Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige