3.5k Aufrufe
Gefragt in Tabellenkalkulation von little-key Mitglied (333 Punkte)
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

4 Antworten

0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
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
...