VBA kann BATCH nicht starten
Hi!
Ziel: Automatische PDF erstellung, sobalt man ein Dokument öffnet.
Folgend meine Anwendung:
Sobald ein Dokument mit Word geöffnet wird, startet ein VBA-Code, welcher den Dokumentennamen ausließt eine Postscriptdatei generiert und anschließend eine BAT-Datei erstellt (FreePDF/ghostscript kann automatisiert nur mit BAT-Dateien gesteuert werden).
Sobald diese BAT-Datei erstellt ist, wird sie von dem VBA-Code gestartet und das PDF mit dem richtigen Namen (also gleich wie der .doc-name) in einem festgelegten Verzeichnis abgespeichert.
Problem: Wenn der VBA-Code die BAT startet, ist das erstellte PDF leer. Klickt der User jedoch auf die eben von VBA erstellte BAT-Datei, wird das PDF ordnungsgemäß erstellt.
Ich bin ratlos.
Ziel: Automatische PDF erstellung, sobalt man ein Dokument öffnet.
Folgend meine Anwendung:
Sobald ein Dokument mit Word geöffnet wird, startet ein VBA-Code, welcher den Dokumentennamen ausließt eine Postscriptdatei generiert und anschließend eine BAT-Datei erstellt (FreePDF/ghostscript kann automatisiert nur mit BAT-Dateien gesteuert werden).
Sobald diese BAT-Datei erstellt ist, wird sie von dem VBA-Code gestartet und das PDF mit dem richtigen Namen (also gleich wie der .doc-name) in einem festgelegten Verzeichnis abgespeichert.
Problem: Wenn der VBA-Code die BAT startet, ist das erstellte PDF leer. Klickt der User jedoch auf die eben von VBA erstellte BAT-Datei, wird das PDF ordnungsgemäß erstellt.
Ich bin ratlos.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 26409
Url: https://administrator.de/contentid/26409
Ausgedruckt am: 15.11.2024 um 21:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
so wie ich das sehe, wird die Batch zwar erstellt aber nicht direkt aktiviert.
Zweite Möglichkeit, die Batch ist noch nicht fertig erstellt und kann deshalb beim aktivieren die Aufgabe nicht durchführen; was ich für wahrscheinlicher halte.
2. Möglichkeiten:
1. zwischen Erstellung und Aktivierung eine kleine Pause machen mit wait oder sleep, gib es bestimmt auch in VBA.
2. im grunde genommen kannst Du hier auch eine Standardbatch erstellen und in Word dann nur noch die Parameter übergeben. Dann brauchst Du auch keine Pause dazwischen.
MfG maneich
so wie ich das sehe, wird die Batch zwar erstellt aber nicht direkt aktiviert.
Zweite Möglichkeit, die Batch ist noch nicht fertig erstellt und kann deshalb beim aktivieren die Aufgabe nicht durchführen; was ich für wahrscheinlicher halte.
2. Möglichkeiten:
1. zwischen Erstellung und Aktivierung eine kleine Pause machen mit wait oder sleep, gib es bestimmt auch in VBA.
2. im grunde genommen kannst Du hier auch eine Standardbatch erstellen und in Word dann nur noch die Parameter übergeben. Dann brauchst Du auch keine Pause dazwischen.
MfG maneich
Hallo,
zu VBA kann ich eigentlich nicht viel sagen und wie Du in Deinem ersten Thread erwähnt hast, läuft die Batch dann ja auch, wenn sie nach dem Erstellen mit Deinem Script, angeklickt wird.
Hier wieder 2. Möglichkeiten:
1. Starte die Batch mit
Shell ("start /w D:\createPDF.bat")
2. schreibe vor dem Programmaufruf in der Batch 1 Zeile mit
sleep 5
muß mal getestet werden.
Noch etwas, soweit ich dies in meinen Unterlagen "VBA für Word" ersehen kann, werden Programme ohne Klammer gestartet, also
Shell "start /w D:\createPDF.bat"
Da ich aber selbst nicht mit VBA arbeite, mußt du es schon mal selbst testen.
MfG maneich
zu VBA kann ich eigentlich nicht viel sagen und wie Du in Deinem ersten Thread erwähnt hast, läuft die Batch dann ja auch, wenn sie nach dem Erstellen mit Deinem Script, angeklickt wird.
Hier wieder 2. Möglichkeiten:
1. Starte die Batch mit
Shell ("start /w D:\createPDF.bat")
2. schreibe vor dem Programmaufruf in der Batch 1 Zeile mit
sleep 5
muß mal getestet werden.
Noch etwas, soweit ich dies in meinen Unterlagen "VBA für Word" ersehen kann, werden Programme ohne Klammer gestartet, also
Shell "start /w D:\createPDF.bat"
Da ich aber selbst nicht mit VBA arbeite, mußt du es schon mal selbst testen.
MfG maneich
Hallo,
1. wenn die Batch den Befehl "sleep x" nicht definieren kann, würde ich mal sagen, daß Deine Systempfade nicht optimal sind.
2. ab W2K ist ja nicht mehr die Command.com sondern die CMD.EXE für Batches zuständig und die Endung für Batches ist hier .cmd. Aus Kompatibilitätsgünden erkennt die CMD.EXE auch .bat-Dateien. Möglicherweise hat VBA Probleme damit.
Also probiere mal Deine Batch mit der endung .cmd oder starte die Batch mal mit
Shell("%comspec% /c ""D:\createPDF.bat""")
MfG maneich
1. wenn die Batch den Befehl "sleep x" nicht definieren kann, würde ich mal sagen, daß Deine Systempfade nicht optimal sind.
2. ab W2K ist ja nicht mehr die Command.com sondern die CMD.EXE für Batches zuständig und die Endung für Batches ist hier .cmd. Aus Kompatibilitätsgünden erkennt die CMD.EXE auch .bat-Dateien. Möglicherweise hat VBA Probleme damit.
Also probiere mal Deine Batch mit der endung .cmd oder starte die Batch mal mit
Shell("%comspec% /c ""D:\createPDF.bat""")
MfG maneich