Supportnet / Forum / Tabellenkalkulation
Excel per Makro beenden
Frage
Hi Leute,
Ich habe gerade ein Makro aufgezeichnet. Am Schluß des Makros soll Excel ohne zu Speichern beendet werden.
Hat jemand eine Ahnung, wie man das machen kann oder was ich am Schluß meines Makro schreiben muß, damit Excel ohne zu speichen beendet wird.
Per Aufzeichnung geht das ja wohl nicht, da man die Aufzeichnung ja nicht beenden kann, wenn Excel schon geschlossen ist.
Hintegrund ist der, daß ich nur einen Teil der Tabelle audrucken will und dazu Seite einrichten arg verändern muß. Diese Änderungen dürfen aber nicht gespeichert werden, da sonst die ganze Tabelle nicht mehr aussieht. Deshal soll Excel ohne Speichen beendet werden, damit die Tablle so erhalten bleibt wie sie vor der Makroausführung war.
Gruß
Ingo
Antwort 1 von YesAmerika
Hi,
Trage einfach am Ende des Macros
ThisWorkbook.Saved = True
Application.Quit
ein.
Yessi
Trage einfach am Ende des Macros
ThisWorkbook.Saved = True
Application.Quit
ein.
Yessi
Antwort 2 von Ingo
Hi Yessi,
Vielen Dank für Deine Hilfe, Klingt ja einfach, aber bevor ich das am lebenden Objekt ausprobiere, hier nochmals eine Frage:
Mein Makro soll das die Datei nicht speichern, da es ausschließlich einen Teil der Tabelle in einer bestimmten Form mit bestimmten Kopf- und Fußzeilen zum Drucken generiert, die aber nich bestehenbleiben sollen, da sie für die Tabellenansicht nicht gewollt werden.
Müßte es da nicht heißen:
ThisWorkbook.Saved=False
Application.Quit
Bin leider in sowas kein Fachmann, aber es erscheint mir logisch.
Gruß
Ingo
Vielen Dank für Deine Hilfe, Klingt ja einfach, aber bevor ich das am lebenden Objekt ausprobiere, hier nochmals eine Frage:
Mein Makro soll das die Datei nicht speichern, da es ausschließlich einen Teil der Tabelle in einer bestimmten Form mit bestimmten Kopf- und Fußzeilen zum Drucken generiert, die aber nich bestehenbleiben sollen, da sie für die Tabellenansicht nicht gewollt werden.
Müßte es da nicht heißen:
ThisWorkbook.Saved=False
Application.Quit
Bin leider in sowas kein Fachmann, aber es erscheint mir logisch.
Gruß
Ingo
Antwort 3 von coros
Nabend Ingo,
die Anweisung von Yessi ist schon richtig.
Zu Deiner Aussage
Du solltest immer, wenn Du VBA-Anweisungen einfügst, eine Kopie Deiner Originaldatei machen. Erst wenn der Code richtig funktioniert, überträgst Du den erarbeiteten Code in die Originaldatei.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
PS: Bitte keine Mails an mich senden. Probleme sollten hier im Forum behandelt werden.
die Anweisung von Yessi ist schon richtig.
Zu Deiner Aussage
Zitat:
aber bevor ich das am lebenden Objekt ausprobiere
aber bevor ich das am lebenden Objekt ausprobiere
Du solltest immer, wenn Du VBA-Anweisungen einfügst, eine Kopie Deiner Originaldatei machen. Erst wenn der Code richtig funktioniert, überträgst Du den erarbeiteten Code in die Originaldatei.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
PS: Bitte keine Mails an mich senden. Probleme sollten hier im Forum behandelt werden.
Antwort 4 von Ingo
Hallo Jessy und Oliver,
Vielen Dank für Eure Hilfe. Es klappt.
Jetzt habe ich aber noch beim Beenden die Abfrage "Speichern Ja/Nein". Kann man die auch noch mit "nein" automatisieren im Makro?
Gruß
Ingo
Vielen Dank für Eure Hilfe. Es klappt.
Jetzt habe ich aber noch beim Beenden die Abfrage "Speichern Ja/Nein". Kann man die auch noch mit "nein" automatisieren im Makro?
Gruß
Ingo
Antwort 5 von YesAmerika
hi,
das sollte eigendlich mit "ThisWorkbook.Saved = True " erledigt sein. Bei mir klappt das jedenfalls.
Yessi
das sollte eigendlich mit "ThisWorkbook.Saved = True " erledigt sein. Bei mir klappt das jedenfalls.
Yessi
Antwort 6 von coros
Moin Ingo,
wo hast Du denn den Code eingefügt. Der Code muss vor dem Beenden der Datei abgefragt werden. Also sollte die Anweisung folgendermaßen aussehen:
Diese Anweisung muss in Diese Arbeitsmappe eingegeben oder kopiert werden.
Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.
wo hast Du denn den Code eingefügt. Der Code muss vor dem Beenden der Datei abgefragt werden. Also sollte die Anweisung folgendermaßen aussehen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
Application.Quit
End Sub
Diese Anweisung muss in Diese Arbeitsmappe eingegeben oder kopiert werden.
Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.
Antwort 7 von Ingo
Hi Jessy & Oliver,
Vielen Dank nochmals für Eure Hilfe.
Oliver ich habe Deine zusätzliche Zeile so eingetragen:
End With
Selection.PrintOut Copies:=1, Collate:=True
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
Application.Quit
End Sub
Damit funktioniert es aber nicht. Der Debugger meldet sich bei der 1. Was mache ich falsch?
Gruß
Ingo
Vielen Dank nochmals für Eure Hilfe.
Oliver ich habe Deine zusätzliche Zeile so eingetragen:
End With
Selection.PrintOut Copies:=1, Collate:=True
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
Application.Quit
End Sub
Damit funktioniert es aber nicht. Der Debugger meldet sich bei der 1. Was mache ich falsch?
Gruß
Ingo
Antwort 8 von coros
Hi Ingo,
den Code, den ich Dir in meinem letzten Beitrag geschrieben habe, arf nicht an Dein vorhandenes Makro eingearbeitet oder angehängt werden, sondern muss in das VBA-Projekt Diese Arbeitsmappe (findest Du auf der linken Seite über den Tabellen) eingefügt werden. Der Code von mir ist keine Erweiterung Deines Makros, sondern eine selbsständige Anweisung, die durchgeführt wird, wenn die Datei geschlossen wird.
Ich hoffe, Du weißt jetzt, wo diese Anweisung hin geschrieben werden muss.
MfG,
coros
Jeder macht was er will, keiner macht was er soll aber alle machen mit.
den Code, den ich Dir in meinem letzten Beitrag geschrieben habe, arf nicht an Dein vorhandenes Makro eingearbeitet oder angehängt werden, sondern muss in das VBA-Projekt Diese Arbeitsmappe (findest Du auf der linken Seite über den Tabellen) eingefügt werden. Der Code von mir ist keine Erweiterung Deines Makros, sondern eine selbsständige Anweisung, die durchgeführt wird, wenn die Datei geschlossen wird.
Ich hoffe, Du weißt jetzt, wo diese Anweisung hin geschrieben werden muss.
MfG,
coros
Jeder macht was er will, keiner macht was er soll aber alle machen mit.
Antwort 9 von Ingo
Hi Oliver,
Danke für die Klärung. Das würde aber bedeuten, daß ich 2 Macros benötigen würde, da auch ansich genauso umständlich wäre wie die Abfrage mit SPEICHERN JA/NEIN.
Gibt es keinen Code, der in meinem Makro diese Abfrage automatisch mit NEIN beantwortet? Das wäre optimal.
Gruß
Ingo
Danke für die Klärung. Das würde aber bedeuten, daß ich 2 Macros benötigen würde, da auch ansich genauso umständlich wäre wie die Abfrage mit SPEICHERN JA/NEIN.
Gibt es keinen Code, der in meinem Makro diese Abfrage automatisch mit NEIN beantwortet? Das wäre optimal.
Gruß
Ingo
Antwort 10 von coros
Moin Ingo,
ich weiß zwar nicht, was daran so umstänlich ist, einen zweiten Code einzufügen, aber versuche doch mal die beiden Anweisungen
in umgekehrter Reihenfolge, also
in Dein vorhandenes Makro einzufügen. Das könnte eventuell Abhilfe schaffen. Ansonsten schicke mir Dein Makro doch mal per Mail. Ich schaue es mir dann an und werde versuchen die von Dir gewünschte Funktion einzuarbeiten.
Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.
ich weiß zwar nicht, was daran so umstänlich ist, einen zweiten Code einzufügen, aber versuche doch mal die beiden Anweisungen
ThisWorkbook.Saved = True
Application.Quit
in umgekehrter Reihenfolge, also
Application.Quit
ThisWorkbook.Saved = True
in Dein vorhandenes Makro einzufügen. Das könnte eventuell Abhilfe schaffen. Ansonsten schicke mir Dein Makro doch mal per Mail. Ich schaue es mir dann an und werde versuchen die von Dir gewünschte Funktion einzuarbeiten.
Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.
Antwort 11 von Guenter
Hallo,
ich habe jetzt nicht alle Details von diesem Thread verfolgt.
Aber die Abfrage zum Speichern beim Beenden kann man unterdrücken mit
Vielleicht hilft das weiter.
Gruß
Günter
ich habe jetzt nicht alle Details von diesem Thread verfolgt.
Aber die Abfrage zum Speichern beim Beenden kann man unterdrücken mit
Application.DisplayAlerts = False
Vielleicht hilft das weiter.
Gruß
Günter
Antwort 12 von Ingo
Hallo Günter und Oliver,
Nochmals besten Dank für Eure Hilfe.
Mit Günters Code funktioniert es so, wie ich es mir vorgestellt habe: in einem einzigen Makro.
Ihr seht mich glücklich, dieses Problem endlich gelöst zu haben.
Gruß
Ingo
Nochmals besten Dank für Eure Hilfe.
Mit Günters Code funktioniert es so, wie ich es mir vorgestellt habe: in einem einzigen Makro.
Ihr seht mich glücklich, dieses Problem endlich gelöst zu haben.
Gruß
Ingo
Antwort 13 von coros
Hi Ingo,
na bitte, hat es doch noch so geklappt, wie Du es Dir vorgestellt hast. Dnake auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
PS: Bitte keine Mails an mich senden. Probleme sollten hier im Forum behandelt werden.
na bitte, hat es doch noch so geklappt, wie Du es Dir vorgestellt hast. Dnake auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
PS: Bitte keine Mails an mich senden. Probleme sollten hier im Forum behandelt werden.

