VB5-VB6
Von: Thorsten Dörfler
Wenn Word durch den Benutzer gestartet wird, trägt es sich in der globalen Running Object Table (ROT) ein. Diese Word-Instanz steht also systemweit zur Verfügung. Mit der GetObject()-Funktion, erhalten Sie eine Referenz auf diese Instanz. Ist keine Word-Instanz aktiv, löst GetObject einen Fehler aus. So können Sie feststellen, ob Word bereits aktiv ist oder nicht:
Public Function AppIsActive(ByVal Class As String) As Boolean Dim lApp As Object On Error Resume Next Set lApp = GetObject(, Class) AppIsActive = Not (lApp Is Nothing) End Function
Anwendung:
Debug.Print AppIsActive("Word.Application")
Wollen Sie mit der bereits bestehenden Word-Instanz arbeiten und nur bei Bedarf eine neue Word-Instanz erstellen, können Sie dies wie folgt umsetzen:
Dim wdApp As Word.Application On Error Resume Next Set wdApp = GetObject(,"Word.Application") On Error Goto 0 If wdApp Is Nothing Then ' Word läuft nicht, neue Instanz erstellen: Set wdApp = New Word.Application End if With wdApp ' ... End With
Diese Lösung ist nicht nur auf Word beschränkt, sondern lässt sich so auch auf Excel, Access oder PowerPoint übertragen.