VBA Datei schliessen / mit / ohne speichern

22/02/2008 - 08:26 von stego | Report spam
Guten Morgen zusammen,

neuer Tag, neues Problem. Habs gestern nicht mehr geschafft, deswegen frag
ich euch:

Ich öffne Datei1.xls. In dieser Datei wird über das Makro mit dem
BefehlApplication.Workbooks.Open die Datei2.xls geöffnet. Danach wechsle ich
mit Windows.(Datei1.xls).activate wieder zurück auf die Ursprungsdatei.

So folgendes Problem:

Datei 1 darf beim Beenden auf keinen Fall überspeichert werden. Das hab ich
geschafft mit "ThisWorkbook.Close SaveChanges:=False" und
"Application.DisplayAlerts = False" in "DieseArbeitsmappe"

Datei 2 muss auf jeden Fall ohne nachzufragen gespeichert werden. Das hab
ich genauso gemacht wie bei Datei 1 (allerdings SaceChanges:=True).

So, jetzt weiss ich nicht mehr weiter.

Wenn ich Datei 1 (im Vordergrund, Aktiv) beende (über X Schliessen, oder
auch gesamtes Excel beende) Dann soll er Datei 1 schliessen, ohne zu
speichern und Datei 2 soll er auch gleich mit schliessen mit speichern.

Schon mal Danke
Stephan
 

Lesen sie die antworten

#1 Peter Schleif
22/02/2008 - 10:12 | Warnen spam
stego schrieb:

Datei 1 darf beim Beenden auf keinen Fall überspeichert werden. Das hab ich
geschafft mit "ThisWorkbook.Close SaveChanges:=False"



Das brauchst Du nicht. Wenn Datei1 aktiv ist und Du klickst auf X,
wird das Schließen von Datei1 eingeleitet und die Prozedur
Workbook_BeforeClose aufgerufen. Wenn Du da nochmal schließt, wird die
Prozedur unnötigerweise noch mal aufgerufen.

Es reicht, einfach die Änderungen in Datei1 zu verwerfen:

Me.Saved = True

Vorher schließt Du noch Datei2, wie von dir beschreiben. Hier der
ganze Code aus Datei1.DieseArbeitsmappe:

Peter


Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim wks As Variant

For Each wks In Workbooks
If wks.Name = "Datei2.xls" Then
Workbooks("Datei2.xls").Activate
ActiveWorkbook.Close SaveChanges:=True
Exit For
End If
Next

Me.Saved = True

End Sub

Ähnliche fragen