Domino 9 und frühere Versionen > ND9: Entwicklung
Word und Excel-Aufruf aus Notes heraus
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