Registriert seit: 25.06.2020
Version(en): 2010
Hallo zusammen,
ich brauch mal wieder Hilfe.
ich möchte aus Excel herraus eine Word-Datei öffenen. Das klappt soweit auch ganz gut.
Ich möchte jedoch erreichen, dass beim erneuten drücken des Boutons die selbe Datei nicht nochmal geöffnet wird.
Excel soll also prüfen ob die Datei bereits geöffnet ist und wen Ja, den Vorgang abbrechen.
Ich habe das mit folgendem Code versucht:
Dim objWordApp As Object
Dim appWord As Object
On Error Resume Next
Set objWordApp = CreateObject("Word.Application")
Set appWord = Application
objWordApp.Application.Visible = True
objWordApp.Application.Documents.Open ("C:\Module\Test.docx")
objWordApp.Activate
err:
If err.Number <> 0 Then
MsgBox ("Dokument war schon geöffnet !")
End If
Set appWord = Nothing
Set objWordApp = Nothing
End Sub
Leider öffnet Excel dennoch Word und bietet ein schreibgeschütztes Dokument an .
Kann mir jemand weiterhelfen?
Gruss Frank
Registriert seit: 11.04.2014
Version(en): Office 2007
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 18.10.2020
Version(en): 365
18.10.2020, 09:04
(Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2020, 09:04 von Warkings.)
Registriert seit: 22.11.2019
Version(en): 365
18.10.2020, 10:58
(Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2020, 11:04 von volti.)
Hallo Frank,
mit folgendem Code kannst Du eine Worddatei öffnen und wenn sie schon offen ist, wird sie nicht erneut geöffnet.
Da die Datei auch geöffnet wird, wenn sie noch nicht offen ist, kann man m.E. auf den Part mit "CreateObject" verzichten.
Schau mal, ob es das Richtige für Dich ist:
Code:
Sub WordOeffnen()
Dim objWordApp As Object
Dim objDoc As Object
Dim sDatei As String
sDatei = "C:\Module\Test.docx"
If Dir(sDatei) <> "" Then
Set objDoc = CreateObject(sDatei, vbNullString) 'Datei öffnen
Set objWordApp = objDoc.Parent 'Application ermitteln
objWordApp.Visible = True 'Word sichtbar machen
objWordApp.Activate 'und aktivieren
'Weitere Aktionen....
Set objDoc = Nothing
Set objWordApp = Nothing
Else
MsgBox "Datei ist nicht vorhanden!", vbCritical, "Worddatei öffnen"
End If
End Sub
____________________
viele Grüße aus Freigericht
Karl-Heinz
Registriert seit: 25.06.2020
Version(en): 2010
Hallo Karl-Heinz,
vielen vielen Dank - genau das habe ich gesucht.
Herzlichen Dank
Frank
Registriert seit: 25.06.2020
Version(en): 2010
Hallo Karl-Heinz,
Alles läuft soweit gut, es gibt nur ein kleines Problem:
wenn ich den Code im VBA Editor eintrage läuft alles wie gewünscht - zwar wird die MsgBox nicht ausgelöst wenn ich das Word Dokument ein zweitesmal öffne, es wird aber auch kein neues Dokument geöffnet - so wie gewünscht.
Wenn ich danach Excel beende und dann wieder neu öffne, erscheint das Word Dokument nur minimiert in der Taskleiste.
Wie kann ich das ändern wenn ich das Fenster maximiert geöffnet bekommen möchte.
Ich habe schon alle möglichen Befehle ausprobiert - leider ohne Erfolg.
Gruß Frank
Registriert seit: 25.06.2020
Version(en): 2010
Hallo Karl-Heinz,
Alles läuft soweit gut, es gibt nur ein kleines Problem:
wenn ich den Code im VBA Editor eintrage läuft alles wie gewünscht - zwar wird die MsgBox nicht ausgelöst wenn ich das Word Dokument ein zweitesmal öffne, es wird aber auch kein neues Dokument geöffnet - so wie gewünscht.
Wenn ich danach Excel beende und dann wieder neu öffne, erscheint das Word Dokument nur minimiert in der Taskleiste.
Wie kann ich das ändern wenn ich das Fenster maximiert geöffnet bekommen möchte.
Ich habe schon alle möglichen Befehle ausprobiert - leider ohne Erfolg.
Gruß Frank
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
22.10.2020, 13:36
(Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2020, 13:36 von schauan.)
Hallöchen,
ich würde noch ein paar andere Schritte nehmen.
Zuerst mal könntest Du prüfen, ob Word geöffnet ist und sich in der Dateiauflistung die gesuchte befindet, ähnlich wie man das auch in Excel tun würde.
Hier mal das Grobgerüst
Code:
Set objWord = GetObject(, "Word.Application")
If Not objWord Is Nothing Then
For Each docs In objWord.Documents
'... Dateinamen pruefen. Wenn Datei in Liste, dann Variable auf True setzen. z.B. boOpen = True
Next
Else
'hier CreateObject
End If
If boOpen = False Then 'Datei oeffnen
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 25.06.2020
Version(en): 2010
Hallo André,
vielen Dank für die Hilfe aber irgendwie funktioniert das so nicht - könnst du evtl. den kompletten Code aufschreiben ?!
Danke und schöne Grüsse Frank
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
hier ist er, auf Basis von Karl-Heinz' Code
Code:
Option Explicit
Sub WordOeffnen()
Dim objWordApp As Object
Dim objDoc As Object
Dim sDatei As String
Dim boOpen As Boolean
sDatei = "C:\Test\Test.docx"
If Dir(sDatei) <> "" Then
On Error Resume Next
Set objWordApp = GetObject(, "Word.Application")
On Error GoTo 0
If Not objWordApp Is Nothing Then
For Each objDoc In objWordApp.documents
'... Dateinamen pruefen. Wenn Datei in Liste, dann Variable auf True setzen. z.B. boOpen = True
If objDoc.Name = Right(sDatei, InStr(1, StrReverse(sDatei), "\") - 1) Then boOpen = True
Next
Else
Set objWordApp = CreateObject("Word.Application")
End If
objWordApp.Visible = True 'Word sichtbar machen
objWordApp.Activate 'und aktivieren
If boOpen = False Then objWordApp.documents.Open sDatei
'oder ... Set objDoc = objWordApp.documents.Open sDatei
'Weitere Aktionen....
Set objDoc = Nothing
Set objWordApp = Nothing
Else
MsgBox "Datei ist nicht vorhanden!", vbCritical, "Worddatei öffnen"
End If
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)