Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

prüfen ob Word-Datei bereits geöffnet ist
#11
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
Antworten Top
#12
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 Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#13
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. Wink

Gruß Uwe
Antworten Top
#14
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#15
(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 Smile
Ich will verhindern das Word dasselbe Dokument zweimal öffnet.
Antworten Top
#16
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 Smile


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 Smile ?

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)
Antworten Top
#17
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
Antworten Top
#18
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
Antworten Top
#19
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)
Antworten Top
#20
Hallo André,

jetzt klappt alles wie gewünscht.

Vielen vielen Dank an euch alle.

Gruß Frank
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste