Hallo,
das ist leider ein Problem - ich habe den exakt gleichen Programmcode verwendet wie vorher (ich hatte den in eine Textdatei geschoben) und später in ein neues Projekt hineinkopiert und dann hat es funktioniert. Das einzige was nicht funktioniert ist die verwendung von .cClose, die führt zu einem Fehler des PDFCreators ("Automatisierungsfehler").
Das ist der Programmcode (VB6-Basis). Ich habe den auf eine Beispiel - Exceldatei gekürzt, dass wäre sonst zu lang geworden (sind 10 Dateien mit je 5 bis 20 Excelsheets):
Public Sub FP_Interpretation(fp_erg)
'Der Verweis auf den PDFCreator muss unter Extras->Verweise unbedingt gesetzt sein
Dim anfang, ende, zusatz As String
'Namen der Datei zusammenstellen
anfang = "FP_Interpretation_"
ende = Format(Now(), "yymmdd")
zusatz = ".pdf"
Dim pdfjob As PDFCreator.clsPDFCreator
sPDFName = anfang + ende + zusatz
sPDFPath = "\\\\cpsrv01du\\Auftragsmanagement\\(2) Öffentlich\\Berichte\\Engpassmanagement_Diverse\\FPInterpretation"
Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "PDFCreator kann nicht gestartet werden.", vbCritical + _
vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
End With
With pdfjob
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cClearCache
End With
'### Aktuelle FP-Interpretation
ChDir "\\\\cpsrv01du\\Auftragsmanagement\\(2) Öffentlich\\Berichte\\Engpassmanagement_Diverse\\FPInterpretation"
'Zuerst muss die Datenquelle geöffnet sein
Workbooks.Open FileName:= _
"\\\\cpsrv01du\\Auftragsmanagement\\(2) Öffentlich\\Berichte\\Engpassmanagement_Diverse\\FPInterpretation\\" & fp_erg, UpdateLinks:=3
'An die PDFCreator-Warteschlange weiterreichen
ActiveWorkbook.PrintOut Copies:=1, ActivePrinter:="PDFCreator", Collate:=True
'Wieder schliessen
ActiveWorkbook.Close (savechanges = False)
'### Drucken
With pdfjob
.cCombineAll
.cPrinterStop = False
End With
'### Warten bis der PDFCreator fertig ist, dann freigeben
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
Set pdfjob = Nothing
'pdfjob.close führt zu einem Automatisierungsfehler des PDFCreators.
'Dieser muss deswegen nach dem Druck von Hand geschlossen werden.
'pdfjob.cClose
End Sub
Ist nicht besonders schön (und lässt sich bestimmt auch eleganter lösen) aber erfüllt seinen Zweck.
Wie gesagt, dass letzte verbliebende Problem ist das pdfjob.cClose.
Es hat sich allerdings eine neue Problematik aufgetan:
Die Excel-Dateien, die ich mit dem Code in PDF umwandle und zu einer PDF kombiniere werden nicht alle komplett gedruckt - wenn ich die PDF´s öffne sind zum Teil in den PDFs nur einzelne Blätter, obwohl die zu druckende Datei aus 10 Sheets besteht.
Liegt das an den Excel-Dateien oder kann/muss ich da dem PDFCreator noch zusätzliche Parameter geben?