如何使用VBA连接.pdf文件?

时间:2012-02-28 19:50:41

标签: vba pdf

我正在尝试使用VBA连接.pdf文件。没有什么花哨的,字面上一个接一个地粘在一起。我做了很多网络搜索,但无法找到任何甚至接近工作的解决方案。有没有人这样做过?谢谢!

3 个答案:

答案 0 :(得分:2)

如果GPL库是您的有效选项,您可以使用ghostscript作为建议in this SO question。如果要创建vbscript文件,可以通过从Windows API调用ShellExecute函数或使用类WScript.Shell来执行此操作。

如果商业图书馆是一个选项,我建议Amyuni PDF Creator ActiveXAmyuni PDF Converter,两者都有一个Append功能,可以完成这项工作。例如,Amyuni PDF Converter的代码如下所示:

Set PDFDoc = CreateObject("CDintfEx.Document.4.5")
PDFdoc.SetLicenseKey "your company", "your license code"
PDFDoc.Open "test_append1.pdf"
PDFDoc.Append "test_append2.pdf"
PDFDoc.Save "result_append.pdf"
Set PDFdoc = Nothing

通常免责声明适用于最新建议

答案 1 :(得分:0)

我运行sedja-console并添加我的pdf作为参数。很容易实现。如果之前创建的目标pdf的readonly标志未设置为yes,请不要忘记在启动Sedja-console之前检查,因为没有此外部进程的反馈。

答案 2 :(得分:0)

我在与一个使用amyuni的客户执行相同任务的同时发现了这个主题。感谢yms提供了一个很好的方法。我发现Acces在“ Set PDFdoc = Nothing”上崩溃。这个对我来说很好:

Public Sub fctPDO_Concatenate_pdf_with_Amyuni_Document_6_0()

' PDO: Usage of .append: Crashes on destruction of pdfdoc-Object. pdf-file is created properly. But usind .append , MS Access crashes - without it's okay.

'       Solution: Build second pdfdoc2 - object , and concatenate using  .AppendEx(Object)   .


On Error Resume Next
Dim PDFdoc As Object
Dim PDFdoc2 As Object

Const strLibraryVersion As String = "CDintfEx.Document.6.0"
' PDO: Examples
'Set PDFdoc = CreateObject("CDintfEx.Document.6.0")     ' PDO: See Object catalog
'Set PDFdoc = CreateObject("CDintfEx.Document")         ' PDO: Not sufficient w/o version
'Set PDFdoc = CreateObject("CDintfEx.Document.4.5")     ' PDO: Older version

Set PDFdoc = CreateObject(strLibraryVersion)
Set PDFdoc2 = CreateObject(strLibraryVersion)

'PDO: Open first file
PDFdoc.Open "D:\PDO_test\Beratungsprotokoll_2018.pdf"


'PDFdoc.Append "D:\PDO_test\GV_0093Z0_Einzelantrag.pdf"   ' PDO: Crashes on   set PDFdoc = nothing

' PDO: Open and append second file (as Object, not as file)
PDFdoc2.Open "D:\PDO_test\GV_0093Z0_Einzelantrag.pdf"
PDFdoc.AppendEx PDFdoc2

' PDO: Open and append third file (as Object, not as file). Re-use of second Object possible
PDFdoc2.Open "D:\PDO_test\result_append_sammel.pdf"
PDFdoc.AppendEx PDFdoc2


'PDO: Save with a new name
PDFdoc.Save "D:\PDO_test\result_append_sammelsammel.pdf"

'PDFdoc.Close => Not existing.

Set PDFdoc = Nothing  '=> Access crashed, with PDFdoc.Append 
Set PDFdoc2 = Nothing

Debug.Print "Done: " & Now() & " Error: " & Err.Number

End Sub

如果您喜欢Ghostscript,则可以使用一行:

C:\PROGRA~2\gs\gs9.19\bin\gswin32c.exe -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOwnerPassword=pass2 -sUserPassword=pass1 -dCompatibilityLevel=2.0 -sOutputFile="D:\PDO_test\Beratungsprotokoll_2018_Sammel.pdf" "D:\PDO_test\Beratungsprotokoll_2018.pdf" "D:\PDO_test\GV_0093Z0_Einzelantrag.pdf" 

这会将后两个文件串联到(新的)第一个文件中,并应用密码(在应用前请参阅安全性详细信息)。短路径可以使用FileScripting对象“ fso”使用

获得
fso.GetFolder(strFolder).ShortPath