OLE Automation um MS Word zu starten und nach vorne zu bringen

Was ist die "richtige" (empfohlene) Methode, um eine Verbindung zu einer laufenden Instanz von MS Word herzustellen und diese Anwendung nach vorne zu bringen? Ich mache in einer VBA-App so etwas wie Folgendes:

...
objWord = GetObject ("Word.Application")
if (objWord is nothing) then
  objWord = CreateObject("Word.Application")
end if
objWord.Activate()
objWord.Visible = true
objWord.WindowState = 1 'maximized
...

Dies funktioniert unter Windows XP mit Word 2007 die meiste Zeit. In regelmäßigen Abständen wird das Word-Fenster jedoch nicht in den Vordergrund gebracht (und stattdessen blinkt das minimierte Symbol für Word in der Taskleiste).

HINWEI: Dieses Problem wurde teilweise mithilfe des FindWindow Win-API-Aufrufs behoben:

hwnd = FindWindow("OpusApp", vbNullString)
If hwnd > 0 Then 
  SetForegroundWindow (hwnd)
end if

Dies ist nicht zu 100% der Fall, da Sie (wie das Drventure hervorhob) nicht sicher sein können, ob mehrere Instanzen von Word ausgeführt werden, für die Sie eine Zugriffsberechtigung erhalten. Seitdem mein Code beim Starten von Word zuerst GetObject und dann CreateObject verwendet, falls dies fehlschlägt, bin ich in Ordnung, solange eine Instanz von Word ausgeführt wird.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage