sys3d
Goto Top

BATCH kann nicht gestartet werden

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.

Content-ID: 26404

Url: https://administrator.de/contentid/26404

Ausgedruckt am: 15.11.2024 um 21:11 Uhr

Biber
Biber 20.02.2006 um 10:39:11 Uhr
Goto Top
Moin, Synamic,
hört sich an, als wäre zum Zeitpunkt der Batches kein Zugriff auf die Word-Datei möglich.
Hast Du denn ein explizites Document.Save vor dem Aufruf?
Poste doch bitte mal Deinen Makro-Schnipsel.

Grüße Biber
Sys3D
Sys3D 20.02.2006 um 11:03:55 Uhr
Goto Top
Hi!

Nein, gespeichert wird nicht. Muss eigentlich auch nicht, denn das Dokument wird dann verworfen, nur das PDF bleibt also übrig.

Folgend der VBA-Code (Word97):

Public Function CreatePostScript()

Dim doc As String
doc = ActiveDocument.Name
doc = Left(doc, Len(doc) - 4)

ActivePrinter = "FreePDF XP"
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:=True, OutputFileName:="C:\Dokumente und Einstellungen\dewea051\Desktop\Nadler\vor\" & doc & ".ps", _
Append:=False


End Function
Public Function searchFile(sFolder As String, sFileName As String) As Boolean
' search in a directory for a specific file name or the last part of a file
' if one file is found it gives the file path and name back
' if there is more then one the return value is 'false'
' if there is no result the return value is an empty string ""

Set fs = Application.FileSearch
With fs
'.LookIn = sFolder
.LookIn = sFolder
.SearchSubFolders = False
.FileName = sFileName
If .Execute() > 0 Then
searchFile = True
Else
searchFile = False
Exit Function
End If
End With

End Function


Sub anfang()


Call CreatePostScript
Dim doc As String
doc = ActiveDocument.Name
doc = Left(doc, Len(doc) - 4)


Call createFile(doc)

Shell ("D:\createPDF.bat")


End Sub

Public Function createFile(strFilename As String)

Dim fso, erstellen
Set fso = CreateObject("Scripting.FileSystemObject")
Set erstellen = fso.CreateTextFile("D:\createPDF.bat", True)
erstellen.writeline ("C:\Programme\gs8.51\bin\gswin32c.exe -q -dNOSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dPDFSETTINGS=/prepress -dLockDistillerParams=false -dAutoRotatePages=/PageByPage -dEmbedAllFonts=true -dSubsetFonts=true -r600 -dDownsampleMonoImages=true -dMonoImageDownsampleThreshold=1.5 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=300 -dDownsampleGrayImages=true -dGrayImageDownsampleThreshold=1.5 -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=150 -dDownsampleColorImages=true -dColorImageDownsampleThreshold=1.5 -dColorImageDownsampleType=/Bicubic -dColorImageResolution=75 -dConvertCMYKImagesToRGB=false -sOutputFile=""C:\Dokumente und Einstellungen\dewea051\Desktop\nadler\nach\" & strFilename & ".pdf"" -c .setpdfwrite -f C:\DOKUME~1\dewea051\Desktop\Nadler\vor\" & strFilename & ".ps")
erstellen.Close

End Function
Sys3D
Sys3D 23.02.2006 um 09:32:54 Uhr
Goto Top
Was mir aufgefallen ist: Wenn ich das Windows neu starte, funktioniert die ganze Anwendung ein mal. Also einmal wird ein komplettes PDF erstellt, folgende Versuche führen zu einem leeren PDF.

?¿?¿