Anzeige
Archiv - Navigation
1224to1228
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

Bei einer bestimmten Datei BeforeClose umgehen

Bei einer bestimmten Datei BeforeClose umgehen
Jürgen
Hallo Excel-Forum,
ich hoffe mir kann jemand von Euch helfen. Schätzungsweise ist das ein kleines Problem.
Hier kurz geschildert:
Beim Öffnen einer Datei kontrolliert diese per Makro, ob es eine aktuellere Version im Netzwerk gibt. Wenn ja speicher sich die Datei als alt weg und öffnet die aktuelle. Nun soll sich die alte Datei schließen. Mein Problem ist, dass eine Anweisung unter BeforeClose hinterlegt ist, die beim Schließen der alten (und nur dieser) Datei nicht ausgeführt werden darf.
Der Befehl Application.EnableEvents bringt mir hier nichts, da nach Schließen mit der neuen Version weitergearbeitet werden soll und diese auf BeforPrint und BeforeClose zugreifen muss.
Ich habe zwei Lösungsansätze die ich im Modul BeforClose versucht habe zu integrieren. In _ beiden soll beim Schließen geprüft werden, ob es die Datei Bestellung_alt.xls ist. Wenn ja beende die Sub, wenn nein arbeite die Befehle ab:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Workbook.Close("C:\Test\Bestellung_alt.xls") Then
Exit Sub
Else
Application.CommandBars("Warengruppen").Visible = False
Application.CommandBars("Warengruppen").Delete
End If
End Sub

oder:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WkbkName As Object
If (WkbkName.Name = "Bestellung_alt.xls") Then
Exit Sub
Else
Application.CommandBars("Warengruppen").Visible = False
Application.CommandBars("Warengruppen").Delete
End If
End Sub

Was mache ich falsch? Wäre für jede Hilfe dankbar.
Danke und Grüße
Jürgen
AW: Bei einer bestimmten Datei BeforeClose umgehen
11.08.2011 09:43:59
Tino
Hallo,
deklariere eine Public Variable z. Bsp. Public booCloseAlt As Boolean in einem Modul.
Diese setzt Du dort wo Du die alte Datei schließt auf True und diese Variable
frägst Du im Workbook_BeforeClose ab.
Beispiel:
'in einem Modul
Public booCloseAlt As Boolean
Sub Beispiel_Alt_Close()
booCloseAlt = True
Workbooks("Bestellung_alt.xls").Close
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not booCloseAlt Then
Application.CommandBars("Warengruppen").Visible = False
Application.CommandBars("Warengruppen").Delete
End If
booCloseAlt = False
End Sub
Gruß Tino
Anzeige
AW: Bei einer bestimmten Datei BeforeClose umgehen
11.08.2011 09:56:54
Jürgen
Hallo Tino,
vielen Dank für Deine schnelle Antwort.
Vom Prinzip verstehe ich was Du meinst.
Habe nur das Problem, dass ich nicht weiß, wie bzw. wo ich das erste Modul hinpacken muss.
Irgendwann kommt dieser Code:
'Windows("Materialbestellung_alt.xls").Activate
'ActiveWindow.Close
Wo soll ich booCloseAlt = True hinschreiben und wo genau das Modul? Erstelle ich einfach ein Modul unter Module?
Es tut mir leid und ich hoffe, ich nerve nicht zu sehr. So tief stecke ich leider nicht in VBA drin.
Mit meinen Lösungsansätzen kann man nichts anfangen?
Grüße
Jürgen
Anzeige
AW: Bei einer bestimmten Datei BeforeClose umgehen
11.08.2011 10:39:51
Tino
Hallo,
in beide alt und neu, die neue soll ja später auch wieder so reagieren, wenn diese zur alten wird.
Gruß Tino
AW: Bei einer bestimmten Datei BeforeClose umgehen
11.08.2011 11:11:23
Jürgen
Hallo Tino,
das ist mir klar. Beide Dateien werden geändert. Mir ist nur nicht ganz klar wo genau.
Ich habe mein Makro wie folgt veränder:
Habe ein neues Modul (Modul1) mit folgenden Inhalt angelegt:
Public Sub Beispiel_Alt_Close(Cancel As Boolean)
booCloseAlt = True
Workbooks("Büromaterialbestellung_alt.xls").Close
End Sub
Im Makro selber habe ich folgendes:
...
Windows("Büromaterialbestellung_alt.xls").Activate
Call Beispiel_Alt_Close
Das BeforClose habe ich genauso übernommen wie Du das angegeben hast.
Wo ist mein Fehler? Brauch dringend Hilfe!!!
Grüße
Jürgen
Anzeige
AW: Bei einer bestimmten Datei BeforeClose umgehen
11.08.2011 12:01:21
Tino
Hallo,
verstehe jetzt nicht, Du hast doch bereits das Makro zum schließen der alten gehabt
so habe ich das Deinem ersten Beitrag entnommen.
In diesem Code hättest Du nur dieses booCloseAlt = True vor die Close Zeile setzen brauchen.
'...
Windows("Büromaterialbestellung_alt.xls").Activate
Call Beispiel_Alt_Close
'...
In einem Modul
Public booCloseAlt As Boolean
Sub Beispiel_Alt_Close()
booCloseAlt = True
Workbooks("Büromaterialbestellung_alt.xls").Close
End Sub
In DieseArbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not booCloseAlt Then
Application.CommandBars("Warengruppen").Visible = False
Application.CommandBars("Warengruppen").Delete
End If
booCloseAlt = False
End Sub

Anzeige
AW: Bei einer bestimmten Datei BeforeClose umgehen
11.08.2011 12:12:45
Tino
Hallo,
weil der Code sich in der Datei befindet die auch geschlossen wird,
kannst Du es auch so aufbauen oder ablaufen lassen.
'...
Call Beispiel_Alt_Close
'...
In einem Modul
Public booCloseAlt As Boolean
Sub Beispiel_Alt_Close()
booCloseAlt = True
ThisWorkbook.Close
End Sub
In DieseArbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not booCloseAlt Then
Application.CommandBars("Warengruppen").Visible = False
Application.CommandBars("Warengruppen").Delete
End If
booCloseAlt = False
End Sub
Gruß Tino
Anzeige
AW: Bei einer bestimmten Datei BeforeClose umgehen
11.08.2011 12:36:55
Jürgen
Hallo Tino,
ich habe etwas auf dem Schlauch gestanden. Durch Deinen letzten Eintrag ist bei mir der Knoten geplatzt.
Es funktioniert hervorragend.
Ich danke Dir sehr sehr herzlich für Deine Hilfe !!!!!!!!!
Danke und Gruß
Jürgen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige