Anzeige
Archiv - Navigation
1064to1068
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

Mehrstufiges Workbook.close funktioniert nicht

Mehrstufiges Workbook.close funktioniert nicht
26.03.2009 15:06:57
roban
Hallo!
Beim Öffnen einer Excel-Mappe "w2.xls" soll eine weitere Excel-Mappe "w3.xls" automatisch geladen werden, und wenn "w2.xls" geschlossen wird, soll auch "w3.xls" automatisch geschlossen werden.
Das klappt soweit auch, in "w2.xls" sind dafür folgende Makros enthalten:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbooks("w3.xls").Close
End Sub



Private Sub Workbook_Open()
Workbooks.Open ("c:\temp\w3.xls")
End Sub


Das ganze soll jetzt um eine Stufe erweitert werden, sodaß beim Öffnen der Mappe "w1.xls" die Mappe "w2.xls" geladen wird, die wiederum "w3.xls" lädt. In "w1.xls" sind die gleichen Makros wie in "w2.xls" enthalten (mit entsprechend geändertem Mappennamen).
Beim Schließen von "w1.xls" sollte dann also "w2.xls" geschlossen werden, welches wiederum "w3.xls" schliessen sollte.
Das klappt aber nicht, wenn man manuell "w1.xls" schließt, werden "w1.xls" und "w2.xls" geschlossen, "w3.xls" bleibt aber geöffnet, d.h. der letzte Befehl "Workbooks("w3.xls").Close" funktioniert nicht.
Im Debugger kann man sehen, daß der Befehl ausgeführt wird, es passiert jedoch einfach nichts, auch keine Fehlermeldung.
Hat jemand eine Idee woran das liegt und wie man es beheben kann?

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrstufiges Workbook.close funktioniert nicht
27.03.2009 11:11:48
Chris
Servus,
probier mal das:
in w1.xls:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long
Application.EnableEvents = True
For i = Workbooks.Count To 1 Step -1
If Workbooks(i).Name = "w2.xls" Or Workbooks(i).Name = "w3.xls" Then
Workbooks(i).Close
End If
Next i
Application.EnableEvents = True
End Sub



Private Sub Workbook_Open()
Workbooks.Open ("C:\temp\w2.xls")
End Sub


und in w2.xls :


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long
Application.EnableEvents = True
For i = 1 To Workbooks.Count
If Workbooks(i).Name = "w3.xls" Then
Workbooks(i).Close
End If
Next i
Application.EnableEvents = True
End Sub



Private Sub Workbook_Open()
Workbooks.Open ("C:\temp\w3.xls")
End Sub


Gruß
Chris

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige