online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon little-key vom 30.12.2021, 13:17 Options

Lösung

Excel beenden, per VBA Batch aufrufen

Vorab einen guten Rutsch an ALLE.

Mein Problem:
Kann man Excel normal aufrufen und beim beenden soll eine MsgBox aufgehen mit Text z. B. "Beenden und versenden".
Dann soll die Excel-Datei geschlossen werden und ein Batch aufgerufen werden, der die Datei versendet.

Ist das über VBA lösbar ohne die Excel-Datei vorher per Batch anzustarten.

Gruß Mario


Antwort schreiben

Antwort 1 von malSchauen vom 30.12.2021, 13:55 Options

Hi,

Aus dem Bauch heraus: möglich ja.

Gegenfrage: Versenden? Womit? Mit der Post? ;-) FTP? Mail? Wenn Mail, dann Welches Programm genau? Oder übernimmt dies alles Dein Batch-File, und dieses ist schon fertig und läuft?

Ich habe selbst noch nichts derartiges programmiert, aber so aus dem Bauch heraus würde ich das ungefähr angehen wollen wie folgt:

- als Auslöser würde ich das "Workbook_BeforeClose"-Ereignis nehmen wollen
- MsgBox ggf. Rückfrage
- Kopie der Mappe im TEMP-Verzeichnis speichern
- Batchaufruf oder Mailversand mit der Datei aus dem temp-Verzeichnis
- Kopie im Temp-Verzeichnis löschen
- Sub Ende-> normales Schliessen läuft weiter


bye
malSchauen

Antwort 2 von little-key vom 30.12.2021, 14:41 Options

Das Versenden übernimmt schon ein fertiges Batch-File per FTP.

Nur wollte ich gleich per VBA die Excel-Datei beenden und den Batch anstarten lassen.

Mario

Antwort 3 von malSchauen vom 30.12.2021, 16:31 OptionsLösung

Lösung
Hi,

Du musst schon etwas genauer werden. Je genauer Du sagts, was Du möchtest bzw. Dir vorstellst oder erreichen willst, desto besser kann man darauf eigehen.

- Datei Schliessen:
-- geht über das kleine "X"
-- geht über das Menü
-- geht via VBA ("ThisWorkbook.Close")

In allen Fällen sollte dabei das Ereignis "Workbook_BeforeClose" ausgelöst werden. Also würde ich den Code genau dort hinein packen.

- MsgBox dürfte soweit ja klar sein.

Ist nun Dein BatchFile fertig und funktionsfähig, dann kannst Du es in diesem Codeabschnitt auch gleich mittels VBA starten:
Shell "C:\MeinBatchFile.bat" 'Pfad/Dateiname anpassen 


So kein weiterer Code im "Workbook_BeforeClose"-Ereignis steht, geht nun das "ganz normale Dateischliessen" weiter. (Rückfrage "Speichern:JA/NEIN/ABBRUCH", ...)

Bedenke aber: Du möchtest die Datei versenden, in der eben dieser Code steht. Die in diesem Post geschilderte Vorgehensweise sendet also die Datei, deren Pfad im BatchFile passen muss, OHNE die Änderungen nach dem letzten Speichern.
Zu allem Überfluss steht der Code dann auch in der Datei auf dem FTP. Wird diese Datei dann also auf einem "fremden" Rechner gestartet/beendet, läuft auch dort der Code an, und sucht das dort sicher nicht vorhandene BatchFile=> Fehler zur Laufzeit. ... ...

soweit mal bis hierhin...
bye
malSchauen

Antwort 4 von little-key vom 30.12.2021, 17:46 Options

Hallo malSchauen,

Du wirst es nicht glauben, aber Du hast mir die perfekten Ideen geliefert.

Ich lasse die Datei wie vorgeschlagen erst temporär abspeichern, dann versenden.
Dabei lasse ich Excel nicht schließen, um ev korrekturen durchzuführen.
Das Schließen wird dann manuell durchgeführt.

Danke, komme jetzt klar.
Beste Grüße Mario

Ähnliche Themen

Beenden von Excel via Makro
DanielG  26.11.2008 - 27 Hits - 4 Antworten

Excel VBA
Tonerl  27.04.2009 - 245 Hits - 7 Antworten

VBA Erzeugte Datei beim Beenden von Excel löschen
Bierschinken  31.07.2009 - 584 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026