I've 0.9.8 PdfCreator installed
My problem is that pdfcreator lock access report creation.
I test the creation of 2 pdf file with same access report (6 pages). I'd like a VBA class module for manage pdfcreator OLE addin.
Sometime questions and notes
1. Why the call "PDFCreator1.cPrinterStop = True" does not work? (i get False on PDFCreator1.cPrinterStop after the call)
2. I get "pdfcreator freezes" in the second step (i=2) becouse pdfcreator open a "user dialog" for ask user file save option. Is a reason of sleeping times?
3. On the first step (i=1) after ".cClose" call the pdfcreator.exe windows process does not terminate. Only if i press "Stop" macro button on my "Microsoft visual basic" dialog this process terminate. IF I DON'T COMMENT THE "TerminateProcess" CALL THEN ALL REPORT DONE!!!
Sorry for my english
Thank you
This is my code
Sub test()
Dim pdfc As New myPdfCreator
For i = 1 To 2
pdfc.BeforePrint ("C:\\testpdfcreator\\test" & i & ".pdf")
Call DoCmd.OpenReport("ReportChiamate1", acViewNormal)
pdfc.CreatePDF
Call DoCmd.Close(acReport, "ReportChiamate1")
Next i
End Sub
--------------- myPdfCreator VBA class module ----------------------------
Private NoProcessingAtStartup As String
Private UseAutosave As String
Private UseAutosaveDirectory As String
Private AutosaveDirectory As String
Private AutosaveFilename As String
Private AutosaveFormat As String
Private PDFCreator1 As PDFCreator.clsPDFCreator
Public Sub BeforePrint(pdfFile As String)
Dim fol As String, fileNameWithoutExt As String
fol = Mid(pdfFile, 1, InStrRev(pdfFile, "\\"))
fileNameWithoutExt = Mid(pdfFile, InStrRev(pdfFile, "\\") + 1)
Set PDFCreator1 = New clsPDFCreator
PDFCreator1.cStart "/NoProcessingAtStartup"
UseAutosave = PDFCreator1.cOption("UseAutosave")
PDFCreator1.cOption("UseAutosave") = 1
UseAutosaveDirectory = PDFCreator1.cOption("UseAutosaveDirectory")
PDFCreator1.cOption("UseAutosaveDirectory") = 1
AutosaveDirectory = PDFCreator1.cOption("AutosaveDirectory")
PDFCreator1.cOption("AutosaveDirectory") = fol
AutosaveFilename = PDFCreator1.cOption("AutosaveFilename")
PDFCreator1.cOption("AutosaveFilename") = fileNameWithoutExt
AutosaveFormat = PDFCreator1.cOption("AutosaveFormat")
PDFCreator1.cOption("AutosaveFormat") = 0 ' 0 = PDF
DefaultPrinter = PDFCreator1.cDefaultPrinter
PDFCreator1.cDefaultPrinter = "PDFCreator"
PDFCreator1.cClearCache
PDFCreator1.cPrinterStop = True
End Sub
Private Sub Class_Terminate()
'PDFCreator1.cClose
Set PDFCreator1 = Nothing
End Sub
'fol vuole \\ finale
Public Sub CreatePDF()
Dim c As Long, OutputFilename As String
PDFCreator1.cPrinterStop = False
c = 0
Do While (PDFCreator1.cOutputFilename = "") And (c 1 Then
Err.Raise vbObjectError + 513, , "ATTENZIONE!! Non si possono stampare più di un pdf alla volta."
End If
c = c + 1
Sleep 200
Loop
OutputFilename = PDFCreator1.cOutputFilename
PDFCreator1.cOption("UseAutosave") = UseAutosave
PDFCreator1.cOption("UseAutosaveDirectory") = UseAutosaveDirectory
PDFCreator1.cOption("AutosaveDirectory") = AutosaveDirectory
PDFCreator1.cOption("AutosaveFilename") = AutosaveFilename
PDFCreator1.cOption("AutosaveFormat") = AutosaveFormat ' 0 = PDF
With PDFCreator1
.cDefaultPrinter = DefaultPrinter
Sleep 200
.cClose
'-----See Note
'Call TerminateProcess("pdfcreator.exe")
End With
Sleep 6000 ' Wait until PDFCreator is removed from memory
If OutputFilename = "" Then
Err.Raise vbObjectError + 513, , "Creating pdf file." & vbCrLf & vbCrLf & "An error is occured: Time is up!", vbExclamation + vbSystemModal
End If
End Sub