Hallo,
ich rufe von einer Notes-Maske aus heraus Word auf:
Dim wrdApp As Variant
Dim wordFile As Variant
Dim count As Integer
Dim sPathToSavedDoc As String
sPathToSavedDoc = "C:\Temp\wordFile.doc"
Set wrdApp = CreateObject("Word.Application")
Set wordFile = GetObject(sPathToSavedDoc , "Word.Document")
wordFile.Application.Visible = True
Bisher hatten wir bei uns in der Firma Office 2013.
Sobald ich "wordFile.Application.Visible = True" gesetzt habe, wurde die gewünschte Word-Datei geöffnet.
Seit kurzem haben wir Office 365 (32 Bit).
Wenn ich das jetzt unter Office 365 aufrufe "wordFile.Application.Visible = True", dann wird Word zweimal geöffnet: einmal ein leeres Word und einmal die gewünschte Datei.
Hat von euch jemand eine Idee, an was das liegen könnte? Warum wird Word zwimal geöffnet?
Ist das ein Bug (in Notes, Word...?)? Oder hat sich der Code geändert?
Hat von euch auch jemand das Problem?
Vielen Dank
Viele Grüße
George
Hallo,
ich habe den Code jetzt so umgebaut:
Dim wrdApp As Variant
Dim wordFile As Variant
Dim count As Integer
Dim sPathToSavedDoc As String
sPathToSavedDoc = "C:\Temp\wordFile.doc"
Set wrdApp = CreateObject("Word.Application")
Call wrdApp.Documents.open (sPathToSavedDoc)
wrdApp.visible = True
Das hat leider auch nicht gebracht. Es werden immer noch 2 Word-Instanzen geöffnet - einmal ein leeres Word und einmal die gewünschte Word-Datei - sobald "wrdApp.visible = True" aufgerufen wird.
Hast du oder jemand anders noch eine Idee?
Vielen Dank
Viele Grüße
George
Dein Beispiel aus dem ersten Post hatte, wie Werner schon schrieb, den Code doppelt.
Das hast du jetzt zwar etwas umgebaut aber die grundsätzliche Dopplung von Create und Open (Get) hast du immer noch drin.
Create startet immer eine neue Instanz, selbst wenn schon/noch eine vorhanden ist. Lass mal einen Taskmanager mitlaufen und beobachte, wann/wie viele WINWORD Instanzen bei dir laufen bzw. während der Code-Ausführung gestartet werden. Im Debugger sieht man schön, wie sowohl CreateObject als auch GetObject eine Instanz starten (dein erstes Beispiel).
Wenn du (immer noch in deinem ersten Beispiel) auf Zeile 8 mit dem CreateObject verzichtest funktioniert dein ursprünglicher Code.
Mal von der anderen Seite her betrachtet - was sagt der Hersteller selbst? Im Beispiel von Microsoft ist die Reihenfolge anders:
Durch die geänderte Reihenfolge trifft der Öffnen-Befehl auf ein sichtbares Fenster statt auf einen Hintergrund-Prozeß.
Set wrd = GetObject(, "Word.Application")
wrd.Visible = True
wrd.Documents.Open "C:\My Documents\Temp.doc"
Set wrd = Nothing
siehe: https://docs.microsoft.com/de-de/office/vba/api/word.application
HTH
Carsten
Probier doch mal folgendes:
Dim wrdApp As Variant
Dim wordFile As Variant
Dim count As Integer
Dim sPathToSavedDoc As String
sPathToSavedDoc = "C:\Temp\wordFile.doc"
On Error Resume Next
Err = 0
Set wrdApp = GetObject(, "Word.Application")
On Error GoTo 0
If Err <> 0 Then Set wrdApp = CreateObject("Word.Application")
wrdApp.visible = True
Call wrdApp.Documents.open (sPathToSavedDoc)
Das Problem jetzt dürfte noch sein, dass das geöffnete Dokument im Hintergrund ist, wenn Word schon lief...