Registriert seit: 30.08.2014
Version(en): Office 365 - Beta 32 Bit
Hallo Frank, :19:
du könntest auch mit " GetObject" arbeiten ( den kannst du auch mehrmals hintereinander ausführen): :21:
Code: Option Explicit
Public Sub Main_1()
On Error GoTo Fin
With GetObject("C:\Temp\Test.doc")
.Parent.Visible = True
.Parent.Activate
End With
' Dein weiterer Code
Fin:
' Word beenden
'If Not objWD Is Nothing Then objWD.Parent.Quit
If Err.Number = 432 Then MsgBox "Datei nicht vorhanden!"
End Sub
Bzw. so mit Variable: :21:
Code: Public Sub Main_2()
Dim objWD As Object
On Error GoTo Fin
Set objWD = GetObject("C:\Temp\Test.doc")
With objWD.Parent
.Visible = True
.Activate
End With
' Dein weiterer Code
Fin:
' Word beenden
'If Not objWD Is Nothing Then objWD.Parent.Quit
Set objWD = Nothing
If Err.Number = 432 Then MsgBox "Datei nicht vorhanden!"
End Sub
________
Servus
Case
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
23.10.2020, 07:09
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020, 07:10 von schauan.)
Hallöchen,
erweitere mal eine Zeile so:
If boOpen = False Then objWordApp.documents.Open sDatei Else objWordApp.documents.Add
Du wolltest ja ein neues Dokument "öffnen" wenn das andere schon offen ist ...
Ansonsten ist der Code von Case deutlich kürzer
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo zusammen,
die Frage des TE war doch
Zitat: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.
Das wird durch eure Vorschäge nicht realisiert.
Gruß Uwe
Registriert seit: 29.09.2015
Version(en): 2030,5
Code: Sub M_snb()
If Dir("G:\OF\beispiel.docx") <> "" Then
GetObject("G:\OF\beispiel.docx").Windows(1).Visible = True
Application.ActivateMicrosoftApp 1
End If
End Sub
Registriert seit: 25.06.2020
Version(en): 2010
(23.10.2020, 07:09)schauan schrieb: Hallöchen,
erweitere mal eine Zeile so:
If boOpen = False Then objWordApp.documents.Open sDatei Else objWordApp.documents.Add
Du wolltest ja ein neues Dokument "öffnen" wenn das andere schon offen ist ...
Ansonsten ist der Code von Case deutlich kürzer Ich will verhindern das Word dasselbe Dokument zweimal öffnet.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
23.10.2020, 10:35
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020, 10:35 von schauan.)
Hi Franky,
ich zitiere mal für das Öffnen eines neuen Dokumentes,
Zitat:... war 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.
wobei sich da die Formulierung etwas beißt. Ich würde das neue Dokument erstellen
Zitat:Wenn ich danach Excel beende und dann wieder neu öffne, erscheint das Word Dokument nur minimiert in der Taskleiste.
Also, wenn ich das Makro ausgeführt habe, Excel beende und am Word-Dokument nichts mache, bleibt es im vorherigen Zustand, z.B. Vollbild. Wenn ich Excel neu starte, tut sich da auch nix. Lediglich Excel ist dann im Vordergrund und Word im Hintergrund. Wenn ich die Datei mit dem Makro öffne ist Word immer noch im Vollbild im Hintergrund. Führe ich das Makro aus, ist Word immer noch im Vollbild und nun im Hintergrund.
Was machst Du anders als ich ?
Hier mal noch zur Sicherheit der Maximier-Code, der käme bei mir nach der zeile mit dem If boOpen ...
objWordApp.ActiveDocument.ActiveWindow.WindowState = 1
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 22.11.2019
Version(en): 365
Hallo zusammen,
eigentlich wollte ich ja auch in meinem Eingangscode mit GetObject arbeiten, wie man aus meiner Textausführung zum Code vielleicht entnehmen kann, hatte mich verschrieben, aber das nur so am Rande.
@Frank:
Ich habe jetzt mehrfach bei geöffneter und nicht geöffneter Worddatei Excel geschlossen und wieder geöffnet.
Bei mir ist nichts minimiert, sondern immer im Windowmodus.....
@snb:
Ein interessanter und deutlich kürzerer Code zum Aktivieren des Objektes (gefällt mir).
Leider erhalte ich jedoch "Laufzeitfehler 424 Objekt erforderlich" wenn die Worddatei nicht auf ist und den "Laufzeitfehler 5941 Objekt nicht in Sammlung", wenn die Datei schon auf ist.
Vielleicht hilft es, wenn man den Fenstermodus setzt.
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 = GetObject(sDatei) If Not oDoc Is Nothing Then Set objWordApp = objDoc.Parent 'Application ermitteln objWordApp.Visible = True 'Word sichtbar machen objWordApp.Activate 'und aktivieren objDoc.ActiveWindow.WindowState = 1 '0=Normal, 1=Maximiert, 2=minimiert
'Weitere Aktionen....
Set objDoc = Nothing Set objWordApp = Nothing End If 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
23.10.2020, 23:30
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020, 23:31 von FrankyHB.)
Hallo, vielen Dank für die viele Unterstützung,
aber irgendwie klappt das alles nicht.
Ich habe eine Variante für Excel Dateien gefunden welche die gewünschte Datei öffnet bzw. wenn diese schon geöffnet ist eine
entsprechende Meldung ausführt.
Sub Test_1()
Dim BoOffen As Boolean
Dim WoDatei As Workbook
For Each WoDatei In Workbooks
If WoDatei.Name = "Test_1.xlsm" Then
MsgBox "Datei ist schon geöffnet!"
BoOffen = True
Exit For
End If
Next
If BoOffen = False Then
Workbooks.Open Filename:="C:\Test\Test_1.xlsm"
End If
Sub End
Das klappt mit Excel Datei perfekt - vieleicht kann man das auf Word-Dokumente anpassen.
Gruß Frank
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Frank,
wenn Du das mal mit meinem code vergleichst, kannst Du sehen, dass ich auch die offenen Dokumente durchgehe und schaue, ob Deins dabei ist. Ich habe hier mal die Zeile zum maximieren und die Meldung, dass die Datei schon offen ist, eingefügt sowie die Prüfung, ob es die Datei irgendwo gibt, rausgenommen.
Code: Option Explicit
Sub WordOeffnen()
'Variablendeklarationen
Dim objWordApp As Object, objDoc As Object
Dim sDatei As String
Dim boOpen As Boolean
'Dateiname festlegen
sDatei = "Test.docx"
'Wordobjekt holen oder neu erstellen
'Dazu Fehlerbehandlung, bei Fehler mit naechster Zeile weitermachen
On Error Resume Next
Set objWordApp = GetObject(, "Word.Application")
On Error GoTo 0
'Wenn Wordobjekt geholt werden kann, dann
If Not objWordApp Is Nothing Then
'Schleife ueber alle offenen Dateien
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
'Ende Schleife ueber alle offenen Dateien
Next
'Wenn Wordobjekt nicht geholt werden kann, dann
Else
'Word oeffnen
Set objWordApp = CreateObject("Word.Application")
'Ende Wenn Wordobjekt geholt werden kann, dann
End If
objWordApp.Visible = True 'Word sichtbar machen
objWordApp.Activate 'und aktivieren
'Wenn Datei nicht offen ist, dann oeffnen, anderenfalls Meldung ausgeben
If boOpen = False Then objWordApp.documents.Open sDatei Else MsgBox "Datei schon offen"
'Word-Fenster maximieren
objWordApp.ActiveDocument.ActiveWindow.WindowState = 1
End Sub
. \\\|/// 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é,
jetzt klappt alles wie gewünscht.
Vielen vielen Dank an euch alle.
Gruß Frank
|