Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA Datei schliessen / mit / ohne speichern

1,881 views
Skip to first unread message

stego

unread,
Feb 22, 2008, 2:26:06 AM2/22/08
to
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

Peter Schleif

unread,
Feb 22, 2008, 4:12:47 AM2/22/08
to
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

stego

unread,
Feb 22, 2008, 9:25:02 AM2/22/08
to
Hallo Peter,

funktioniert schon fast einwandfrei.
Es funktioniert nur wenn ich Excel beende. Wenn ich aber nur die Datei1
beende(Fenster schliessen), dann bleibt Datei2 noch offen

Gruß
Stephan

"Peter Schleif" schrieb:

Peter Schleif

unread,
Feb 22, 2008, 9:42:02 AM2/22/08
to
stego schrieb:

>
> Es funktioniert nur wenn ich Excel beende. Wenn ich aber nur die Datei1
> beende(Fenster schliessen), dann bleibt Datei2 noch offen

Das kann ich leider nicht bestätigen. Bei mir klappt es (2002 SP3).

Beim roten X geht alles zu. Beim schwarzen x oder Menü Datei |
Schließen gehen ebenfall beide Mappen zu, aber Excel selbst belibt
gestartet - was IMHO das normale Verhalten ist.

Peter

stego

unread,
Feb 22, 2008, 9:51:02 AM2/22/08
to
Excel 2003
Aber dein Tipp hat mir sehr geholfen.
Danke

"Peter Schleif" schrieb:

0 new messages