Autor Thema: Word und Excel-Aufruf aus Notes heraus  (Gelesen 1745 mal)

Offline sorosch

  • Frischling
  • *
  • Beiträge: 18
Word und Excel-Aufruf aus Notes heraus
« am: 29.04.22 - 16:06:14 »
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

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

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 248
  • Geschlecht: Männlich
Antw:Word und Excel-Aufruf aus Notes heraus
« Antwort #1 am: 02.05.22 - 08:16:42 »
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

Offline sorosch

  • Frischling
  • *
  • Beiträge: 18
Antw:Word und Excel-Aufruf aus Notes heraus
« Antwort #2 am: 03.05.22 - 11:06:12 »
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

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


Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
Antw:Word und Excel-Aufruf aus Notes heraus
« Antwort #3 am: 03.05.22 - 12:02:48 »
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

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

HTH
Carsten

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 248
  • Geschlecht: Männlich
Antw:Word und Excel-Aufruf aus Notes heraus
« Antwort #4 am: 03.05.22 - 12:55:01 »
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)

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

Offline sorosch

  • Frischling
  • *
  • Beiträge: 18
Antw:Word und Excel-Aufruf aus Notes heraus
« Antwort #5 am: 03.05.22 - 15:38:17 »
Hallo,

vielen Dank an euch für die Hilfe.

Ich habe jetzt alle euere Tipps ausprobiert - Leider haben diese alle nichts gebracht. Es wird immer noch Word zweimal geöffnet.

Aber durch Try and Error endlich herausgefunden:

Oh jeeee....

Wie ich es von Anfang anvermutet hatte. Es lag an dem paketierten Standard-Word-Paket, das bei uns in der Firma verteilt wird.

Hier wird standardmäßig ein COM-Add-In mitverteilt und automatisch aktiviert, das bei uns in der Firma "programmiert" wurde. Wenn ich dieses Add-In deaktiviere, so funktioniert alles.
Word wird dann nur einmal geöffnet.

Super - zumindest die Ursache gefunden. Am Quellcode liegts zuknidest nicht.

Vielen Vielen Dank nochmals an euch für die Hilfe.
Viele Grüße
George



 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz