Antworten / Aufrufe | Themen mit dem Stichwort word vba | |
---|---|---|
0 Antworten 9383 Aufrufe |
Die Methode "Execute" im Word-VBA "FileSearch"-Objekt funktioniert nicht mehr | |
14 Antworten 18714 Aufrufe |
PDFCreator - wie unter WordVBA programmieren? Begonnen von Jean Raul
03. Juli 2008, 22:35:12 Hat schon mal jemand versucht, mit dem (kostenlosen) PDFCreator http://www.pdfforge.org/ WordVBA zu programmieren? Im Prinzip schaffe ich es ja mit dem mitgelieferten Beispielprogrammen. Ich habe aber Probleme damit, den Dateinamen zu programmieren, unter dem die pdf ausgegeben werden soll. Die PDF wird immer mit dem Pfad und Namen ausgegeben, der den Autosave-Optionen des Programms entspricht, aber nicht mit dem Namen, den ich im Programm vorgebe und haben will. So lautet mein VBA-Skript. Es soll die aktuell in Word geöffnete Datei ohne weitere Benutzereingriffe als PDF in den Pfad <PDFPfad$> unter dem Namen <PDFName$> speichern: [code] Public Function PDFDruck(Optional OhneMsg As Boolean) Dim Zwi$, PDFPfad$, PDFName$, pdfjob PDFPfad$ = "C:\Zwi" 'Ermittelt den Namen des aktiven Dokuments: Zwi$ = ActiveDocument.Name If InStr(1, Zwi$, ".", vbTextCompare) > 1 Then PDFName$ = Mid(Zwi$, 1, InStr(1, Zwi$, ".", vbTextCompare) - 1) Else PDFName$ = "Unbenannt" End If Set pdfjob = New PDFCreator.clsPDFCreator With pdfjob If .cStart("/NoProcessingAtStartup") = False Then MsgBox "PDFCreator kann nicht initialisiert werden. Bitte beenden Sie die PDFCreator-Prozesse.", vbCritical + _ vbOKOnly, "PrtPDFCreator" GoTo Ende End If .cOption("UseAutosave") = 1 .cOption("UseAutosaveDirectory") = 1 .cOption("AutosaveDirectory") = PDFPfad$ .cOption("AutosaveFilename") = PDFName$ .cOption("AutosaveFormat") = 0 '0 = PDF .cDefaultPrinter = "PDFCreator" .cPrinterStop = False .cClearCache ActiveDocument.PrintOut Background:=False End With '!!!!!!!!!!!!!!!!Wartet ab, bis fertig gedruckt ist:!!!!!!!!!!!!!! Dim sleepTime, maxTime, c sleepTime = 250 maxTime = 10 c = 0 Do While (pdfjob.cOutputFilename = "") And (c < (maxTime * 1000 / sleepTime)) c = c + 1 Sleep 200 Loop '!!!!!!!!!!!!!!!Ende des Abwartens!!!!!!!!!!!!!! Ende: Zwi$ = pdfjob.cOutputFilename pdfjob.cClose Set pdfjob = Nothing If Not OhneMsg Then If Len(Zwi$) > 0 Then MsgBox "Das Dokument wurde nach " & Zwi$ & " gespeichert.", vbInformation Else MsgBox "Beim Speichern als pdf ist ein Fehler aufgetreten!", vbCritical End If End If PDFDruck = Zwi$ End Function [/code] Auch die anderen COM-Funktionen des Programms sind mir ein Buch mit sieben Rätseln, da die Funktionen nach meiner Ansicht sehr schlecht dokumentiert sind. Weiß jemand mehr? Anbei die "Dokumentation" und die Beispieldateien: |
Ich meine z. B. folgenden Code (etwas abgewandelt aus den VBA-Beispielen):
[code]
With Application.FileSearch
.FileName = "99*.*"
.LookIn = "C:\My Documents"
.Execute
'Hier wird komischerweise immer 0 ausgegeben:
MsgBox .FoundFiles.Count
'Das funktioniert dann natürlich auch nicht:
For I = 1 To .FoundFiles.Count
MsgBox .FoundFiles(I)
Next I
End With
[/code]
.FoundFiles.Count liefert bei mir seit gestern immer 0, auch wenn die gesuchte Datei ganz sicher und auf jeden Fall existiert. Bis zu den gestrigen Updates lieferte .Execute immer die korrekte Anzahl der gefundenen Dateien. Was ist los?