Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro funktioniert nicht wenn zwei Dokumente geöffnet

Makro funktioniert nicht wenn zwei Dokumente geöffnet
26.12.2019 16:54:36
Peter
Hallo,
ich habe eine UF mit CmdBtn1 zum Öffnen eines Dokument aus einer .dot.
Mit CmdBtn2 schliesse ich die Vorlage ohne Speichern.
Wenn nur das Dokument1 aus der Vorlage geöffnet ist, dann funktioniert alles einwandfrei.
Wenn jedoch ein weiteres Dokument egal ob aus Vorlage oder docm, docx geöffnet ist, wird das letzte Dokument geschlossen, nicht jedoch das erforderlich, nämlich das Dokument1 aus der geöffneten Vorlage.
Könnt ihr mir bitte helfen, was an u. a. Code geändert werden muss, damit nur dieses Dokument geschlossen wird.
'Word beenden
<pre>Private Sub CommandButton2_Click()
' Wichtig!!
' unter "Extras" - "Verweise" einen Verweis auf die "Microsoft Word X.0 Object-Library" setzen!
Dim strDName As String
Dim wrdApp, wrdDoc
strDName = "Test01.dotm"
wrdDoc = "C:\Users\Peter\Desktop\Word_mit_Makros_öffnen_dot\Dokumente\Test01.dotm"
'Anfang Prüfung, ob Word geöffnet
On Error Resume Next
Set wrdApp = GetObject(, "Word.Application")
If Err.Number = 429 Then ' keine Word-Instanz vorhanden
Err.Clear
On Error GoTo 0
Me.Label1.Caption = "keine Word-Instanz vorhanden!"
Else
On Error GoTo 0
If wrdApp.Documents.Count = 0 Then
wrdApp.Quit
Else
On Error Resume Next
Open wrdDoc For Binary Access Read Lock Read As 1
Close #1
If Err.Number = 70 Then
'Datei ist bereits offen
Me.Label1.Caption = "Dokument1 aus" & vbLf & wrdDoc & vbLf & " ist in Benutzung!"
If wrdApp.Documents.Count > 0 Then
' If wrdApp.Documents.Count = 1 Then
wrdDoc.Documents(strDName).Activate
wrdDoc.Documents(strDName).Close False
Me.Label1.Caption = "Dokument1 aus" & vbLf & wrdDoc & vbLf & " wurde geschlossen!"
wrdApp.Quit savechanges:=False
Application.DisplayAlerts = False
End If
Application.DisplayAlerts = True
Else
'Datei ist nicht offen
' MsgBox wrdDoc & " ist nicht in Benutzung"
Me.Label1.Caption = "Dokument1 aus" & wrdDoc & vbLf & " ist nicht in Benutzung!"
End If
On Error GoTo 0
End If
End If
'Ende Prüfung, ob Word geöffnet
'aufheben von Set
Set wrdApp = Nothing
End Sub</pre>
Besten Dank für eure Hilfe.
Gruss
Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro funktioniert nicht wenn zwei Dokumente geöffnet
26.12.2019 21:07:39
Luschi
Hallo Peter,
Dein Code ist etwas verwirrend:

- wenn CmdBtn1 ein Dokument aus einer Word-Vorlage erstellt
- muß man in CmdBtn2 nicht prüfen, ob Word geöffnet ist
- das gehört in CmdBtn1
- mit welchen Befehl Du das Dokument öffnest/erstellst - zeigst Du nicht
- bei mir sieht das so aus
- Public newDocx As Object
Set newDoc = wddApp.Documents.Add(Template:= "C:\Irgendwo\WordVorlagen\blablabla.dotm", _
NewTemplate:=False, DocumentType:=0)
'irgendwas im Dokument tun
'speichern
'12 = wdFormatXMLDocument in Word - Excel kennt diese Konstante aber nicht, deshalb der  _
numerische Wert
newDocx.Save2 FileName:="Dok2.docm", FileFormat:= 12
newDocx.Close 0
Bei dieser Vorgehensweise muß man nicht wissen, vieviele weitere Dokumennte in der selben Word-Instanz noch geöffnet sind, die Variable 'newDocx' ist das Worddokument, das geöffnet, geöndert, gespeichert und wieder geschlossen werden soll.
Außerdem arbeite ich ohne den Vba-Verweis auf die Word-Bibliothek (early bindig) sondern verwende CreateObject (late binding) . mehr dazu weiß Tante Google.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Makro funktioniert nicht wenn zwei Dokumente geöffnet
27.12.2019 12:20:24
Peter
Hallo Luschi,
besten Dank für Deine Hilfe. Das mit dem öffnen klappt einwandfrei:
'Word öffnen
<pre>Private Sub CommandButton1_Click()
Dim wrdApp As Object
Dim newDoc As Object
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
wrdApp.WindowState = 1 '0 = Normal; 1 = Maximized; 2 = Minimized
Set newDoc = wddApp.Documents.Add(Template:="C:\Irgendwo\WordVorlagen\blablabla.dotm", _
NewTemplate:=False, DocumentType:=0)
End Sub</pre>
~f~
Aber das mit dem schliessen klappt noch nicht.
Was muss bitte in
~f~
<pre>Private Sub CommandButton1_Click()
End Sub</pre>
eingefügt werden.
Besten Dank
Gruss
Peter
Anzeige
AW: Makro funktioniert nicht wenn zwei Dokumente geöffnet
30.12.2019 06:59:21
Oberschlumpf
Hi Peter,
newDoc As Object muss im normalen Modul mit Public ganz oben stehen (ganz oben = wirklich ganz oben; in der ersten Zeile)
Public newDoc As Object

Und in deinem Button zum Schließen schreibst du
newDoc.Close 0

Hilfts?
Wenn nicht, zeig per Upload bitte eine Bsp-Excel-Datei mit deinem Code + allen Buttons, die erforderlich sind.
Ciao
Thorsten
AW: Makro funktioniert nicht wenn zwei Dokumente geöffnet
30.12.2019 13:05:35
Peter
Hallo Thorsten,
besten Dank für Deine Hilfe. Es klappt einwandfrei.
Ich wünsche Dir und dem gesamten Excel-Team ein gesundes, gutes neues Jahr 2020.
Gruss
Peter
Anzeige
AW: Makro funktioniert nicht wenn zwei Dokumente geöffnet
30.12.2019 13:22:41
Peter
Hallo Thorsten,
habe doch noch ein Problem und zwar mit dem Beenden von Word.
newDoc.Close 0 - schliesst das Dokument. Nicht jedoch Word. Ich benötige jetzt jedoch noch eine Lösung, mit welcher das Word in welchem newDoc beinhaltet geschlossen wird nicht jedoch das andere Dokument mit Word.
Kannst Du mir hierbei bitte noch helfen.
Besten Dank
Gruss
Peter
neue Frage = neuer Beitrag
30.12.2019 16:30:23
Oberschlumpf
Hi Peter,
nein, ich kann leider nicht helfen.
In meiner anderen Antwort habe ich nur, etwas anders formuliert, noch mal die Lösungsidee von Luschi erklärt.
Sonst kenn ich mich mit Zugriff aus Excel auf Word nicht weiter aus.
Außerdem: Du hast doch jetzt ein neues Problem. Dann erstell doch einfach einen neuen Beitrag. Die Chance auf Antworten ist dann ja auch wieder größer.
Ciao
Thorsten
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige