VBA-Programmierung in Microsoft Excel

Tutorial: Excel-Beispiele

Anwendung aufrufen und Makroausführung unterbrechen

Gruppe

API

Bereich

Anwendung

Thema

Anwendung aufrufen und Makroausführung unterbrechen

Problem

Wie kann ich über ein VBA-Programm eine andere Anwendung aufrufen und die Makroausführung solange unterbrechen, bis die andere Anwendung beendet wird?

Lösung

Geben Sie den nachfolgenden Code in ein Standardmodul ein und weisen Sie ihn einer Schaltfläche zu.




StandardModule: basMain

Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const WAIT_TIMEOUT = &H102&

Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
    ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
    ByVal dwMilliseconds As Long) As Long

Sub Aufruf()
   Call Win32WaitTilFinished("notepad.exe")
   MsgBox "Notepad ist beendet!"
End Sub

Sub Win32WaitTilFinished(ProgEXE As String)
    Dim ProcessID As Long
    Dim hProcess As Long
    Dim RetVal As Long

    ProcessID = Shell(ProgEXE, vbNormalFocus)
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID)
    Do
        DoEvents
        RetVal = WaitForSingleObject(hProcess, 50)
    Loop Until RetVal <> WAIT_TIMEOUT
End Sub

    


Beiträge aus dem Excel-Forum zu den Themen API und Anwendung