Auf geöffnetes Word verweisen/nutzen

  • Outlook

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von volti.

    Auf geöffnetes Word verweisen/nutzen

    Hallo zusammen,

    in diesem Thread PDF zusammenfügen erstelle ich eine Worddatei bzw. daraus eine PDF - Datei (Function SaveMessageAsPDF).

    Leider funktioniert das nur dann, wenn Word noch nicht geöffnet ist. Eigentlich sollte die Function auch Word beenden. Aber das klappt leider nicht wie gewünscht.

    Jetzt gibt es leider noch ein Problem: Der Benutzer kann ja selbst schon Word geöffnet haben und eine entsprechende Datei damit bearbeiten.

    Daher suche ich jetzt nun eine Möglichkeit:

    1. zu prüfen, ob Word schon gestartet wurde

    2. Wenn ja, dann sollen die Verweise auf diese geöffnete Sitzung sich beziehen und Word nicht erneut starten. Die separate Steuerung der nachfolgenden Befehle würde ich dann über eine globale Variable handeln.

    Kann mir hier jemand einen Tipp geben?

    Gruß

    Volker

    P.S. Anhang Fehlermeldung, die nach dem zweiten Aufruf kommt. Word ist aber nach dem ersten Mal nicht im Taskmaster zu sehen. Erst nach der Fehlermeldung taucht es auf
    Bilder
    • Fehlermeldung.jpg

      43,63 kB, 451×256, 69 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Volker Bunge“ ()

    Um eine laufende Office-App-Instanz an den Haken zu bekommen, kannst Du damit arbeiten:

    VB.NET-Quellcode

    1. Private Function GetRunningWordInstance() As Microsoft.Office.Interop.Word.Application
    2. If Diagnostics.Process.GetProcessesByName("WINWORD").Any Then Return DirectCast(Runtime.InteropServices.Marshal.GetActiveObject("Word.Application"), Microsoft.Office.Interop.Word.Application)
    3. Return Nothing
    4. End Function
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed,

    vielen Dank für die schnelle Antwort.

    Habe gerade noch meinen Beitrag um die Fehlermeldung geändert.

    Wenn ich Deine Antwort in Outlook einfüge musste ich sie so ändern, damit sie nicht rot war

    VB.NET-Quellcode

    1. Public Function GetRunningWordInstance() As Microsoft.Office.Interop.Word.Application
    2. If Diagnostics.Process.GetProcessesByName("WINWORD").Any Then
    3. GetRunningWordInstance = DirectCast(Runtime.InteropServices.Marshal.GetActiveObject("Word.Application"), Microsoft.Office.Interop.Word.Application)
    4. Else
    5. GetRunningWordInstance = Nothing
    6. End If
    7. End Function


    Habe dann die Function noch mit einem Call vor allem aufgerufen. Doch danach reagiert Outlook nun gar nicht mehr. Erst wenn ich alles wieder deaktiviere, dann läuft alles wieder bisher.

    Somit ist dieser Lösungsansatz für Outlook nicht praktikabel. Nutze Outlook 365 Exchange.

    Gruß

    Volker
    Ah, das hat es mit Outlook auf sich. Hab mich schon gefragt, warum Du dauernd von Word erzählst, aber nix von Outlook. Gut, hab auch nicht auf das Unterforum geschaut. Der von mir gepostete Code ist VB.NET :S
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo Volker,

    teste mal, ob mit nachfolgendem Test-Code funktioniert:

    Visual Basic-Quellcode

    1. Sub WordOffen()
    2. Dim OffApp As Object, oDoc As Object
    3. On Error Resume Next
    4. Set OffApp = GetObject(, "Word.Application") 'Word schon offen?
    5. If Err.Number = 429 Then
    6. Err.Clear
    7. Debug.Print "Word ist noch nicht geöffnet!"
    8. Else
    9. Set oDoc = OffApp.Documents.Open("C:\Users\vv\Documents\PB.docx")
    10. End If
    11. End Sub


    viele Grüße
    Karl-Heinz