29. März 2024, 07:40
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0409
  W03: Überprüfung, ob schon eine Instanz von Word geöffnet ist
 Von Holger
 Am 20. Juni 2008 um 15:12:28
 Frage Hallo zusammen,

Ich stehe vor folgendem Problem: In einer Word-Vorlage ist ein modales UserForm eingebunden, das automatisch beim öffnen der Vorlage angezeigt wird. Allerdings muss beim öffnen überprüft werden, ob Word schon läuft. Falls ja, soll die Vorlage "sich selbst" in einer neue Instanz von Word starten (also Winword.exe doppelt im Task-Manager) und geschlossen werden geschlossen werden, denn ansonsten werden alle anderen Word-Fenster durch das modale UserForm blockiert (Das Problem müsste ja allgemein bekannt sein). Außerdem soll überprüft werden, ob schon ein Dokument aus dieser Vorlage geöffnet ist, da mein UserForm höchstens ein mal geöffnet sein darf.
Momentan tut es nicht so wie ich will. Es passieren lauter komische Sachen, je nachdem wie viele sonstige Word-Fenster offen sind und welche Dateien in welcher Reihenfolge geöffnet wurden. Hier mal der Code (steh im Modul ThisDocument in Document_Open() und in AutoNew():
Dim i As Integer

'Sind noch andere Word-Fenster geöffnet?
If Me.Application.Documents.count > 1 Then

'In der Schleife wird überprüft, ob dieses Dokument schon geöffnet ist
For i = 1 To Me.Application.Documents.count - 1
If Me.Application.Documents(i).Name = ThisDocument.Name Then
'Dokument schon geöffnet, also Meldung an Benutzer und dieses Dokument abschießen
MsgBox "AVE ist bereits geöffnet. Es ist nicht möglich, mehrere Instanzen von AVE gleichzeitig auszuführen.", _
vbCritical
ThisDocument.Close (False)
Application.Quit (False)
Exit Sub
End If
Next

'Auf jeden Fall dieses Dokument In neuer Instanz öffnen, falls schon andere Dokumente geöffnet sind
Dim App As Application
Dim Neudoc As Document
'Neue Word-Instanz basteln
Set App = CreateObject("Word.Application")
App.Visible = True
'Dokument In der neuen Instanz öffnen
Set Neudoc = App.Documents.Open(FileName:=ThisDocument.Path & "\" & ThisDocument.Name, Visible:=True)
App.Activate
'Dieses Dokument abschießen
Me.Application.Quit (False)
Set Neudoc = Nothing
Set App = Nothing
Exit Sub
'Wenn alles passt, UserForm anzeigen
Else
Form_main.Show
End If
Der Fehler leigt wohl darin, daß ich immer nur auf die aktuelle Instanz zugreife. Gibt es eine Art Applications-Container, durch den ich durchiterieren und auf andere Word-Instanzen zugreifen könnte? Falls jemand ne bessere Idee hat, immer her damit
[ VB-/VBA-Forum | Archiv 0409 | Archiv-Übersicht ]
 Antworten
W03: Überprüfung, ob schon eine Instanz von Word geöffnet ist - Holger 20. Juni 2008 um 15:12:28
Re: Überprüfung, ob schon eine Instanz von Word geöffnet ist - Holger 01. Juli 2008 um 16:46:35

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum