Domino 9 und frühere Versionen > ND9: Entwicklung

Word und Excel-Aufruf aus Notes heraus

(1/2) > >>

sorosch:
Hallo,

ich rufe von einer Notes-Maske aus heraus Word auf:


--- Code: ---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

--- Ende Code ---

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

Werner Götz:
Ich nehme an, dass sich bzgl. Sichtbarkeit der initialisierten Objekte / Anwendungen etwas geändert hat.

Aus meiner Sicht war der Code schon immer falsch, es wurden 2 Verbindungen Notes -> Word initialisiert: eine mit CreateObject und eine mit GetObject.

Mein Vorschlag: Das GetObject ersetzen durch die entsprechende Methode von wrdApp (müsste also wrdApp.Documents.Open sein).

-Werner

sorosch:
Hallo,

ich habe den Code jetzt so umgebaut:


--- Code: --- 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

--- Ende Code ---

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

CarstenH:
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ß.


--- Code: ---Set wrd = GetObject(, "Word.Application")
wrd.Visible = True
wrd.Documents.Open "C:\My Documents\Temp.doc"
Set wrd = Nothing

--- Ende Code ---

siehe: https://docs.microsoft.com/de-de/office/vba/api/word.application

HTH
Carsten

Werner Götz:
Probier doch mal folgendes:


--- Code: ---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)

--- Ende Code ---

Das Problem jetzt dürfte noch sein, dass das geöffnete Dokument im Hintergrund ist, wenn Word schon lief...

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln