@YAIM wrote:
Hi
I am using vba to do a merge via com using code written by Kenneth Hobson (see below). However when I merge 100 files I find that the files do not always appear in the correct order in the merged document.
Any help would be gratefully appreciated. Thanks
' Macro Purpose: Print to PDF file using PDFCreator v2.3.2, Kenneth Hobson, Oct. 8, 2016
' Designed for early bind, set reference to: PDFCreator - Your OpenSource PDF Solution
' sPDFName() assumed to be 0 index based string array.
Sub PDFCreatorCombine(sPDFName() As String, sMergedPDFname As String, Optional tfKillMergedFile As Boolean = True)
Dim oPDF, msgDim q As Queue Dim pJob As PrintJob Dim pj As PrintJob Dim i As Integer, ii As Integer Dim fso As Object, tf As Boolean Dim s() As String On Error GoTo EndSub Set oPDF = CreateObject("PDFCreator.PDFCreatorObj") If oPDF.IsInstanceRunning Then Err.Raise Number:=11111, Description:="PDF creator is running" End If Set q = CreateObject("PDFCreator.JobQueue") q.Initialize Set fso = CreateObject("Scripting.FileSystemObject") If tfKillMergedFile And fso.FileExists(sMergedPDFname) Then Kill sMergedPDFname For i = 0 To UBound(sPDFName) If fso.FileExists(sPDFName(i)) Then ii = ii + 1 ReDim Preserve s(1 To ii) s(ii) = sPDFName(i) End If Next i tf = q.WaitForJobs(ii, 5) 'Wait 5 seconds for jobs to que For i = 1 To UBound(s) oPDF.AddFileToQueue s(i) Next i q.MergeAllJobs Set pj = q.NextJob With pj .SetProfileByGuid "DefaultGuid" .SetProfileSetting "Printing.PrinterName", "PDFCreator" .SetProfileSetting "Printing.SelectPrinter", "SelectedPrinter" .SetProfileSetting "OpenViewer", "false" .SetProfileSetting "OpenWithPdfArchitect", "false" .SetProfileSetting "ShowProgress", "true" .ConvertTo sMergedPDFname End With
EndSub:
If Err.Number <> 0 Then
msg = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & Chr(13) & "Error Line: " & Erl & Chr(13) & Err.Description
MsgBox msg, , "Error", Err.HelpFile, Err.HelpContext
End If
q.ReleaseCom
End Sub
Posts: 1
Participants: 1