前回の記事では、iTextSharpを使ってPDFファイルを結合するPowerShellコードを紹介しましたが、今回はAcrobatを使ってPDFファイルを結合するVBAマクロを紹介したいと思います。
Option Explicit
Public Sub Sample()
Dim v As Variant '結合元PDFファイル
v = Array( _
"C:\Test\Sample01.pdf", _
"C:\Test\Sample02.pdf", _
"C:\Test\Sample03.pdf", _
"C:\Test\Sample04.pdf" _
)
MergePDF v, "C:\Test\Output.pdf"
End Sub
Private Sub MergePDF(ByVal InputFilePath As Variant, _
ByVal OutputFilePath As String)
'Acrobatを利用してPDFファイルを結合する
Dim pdoc As Object
Dim i As Long
Const PDSaveFull = &H1
With CreateObject("AcroExch.PDDoc")
If .Create = True Then
Set pdoc = CreateObject("AcroExch.PDDoc")
For i = LBound(InputFilePath) To UBound(InputFilePath)
If pdoc.Open(InputFilePath(i)) = True Then
.InsertPages .GetNumPages() - 1, pdoc, 0, pdoc.GetNumPages() - 1, True
pdoc.Close
End If
Next
.Save PDSaveFull, OutputFilePath
.Close
End If
End With
End Sub
PDFファイルを開いてInsertPagesメソッドでページを挿入するだけの簡単なマクロです。
やはりVBAからPDFファイルを処理するときは本家Acrobatがオススメです。
2018/8/31 追記:
ドラッグ&ドロップした複数のPDFファイルを結合するスクリプトも書いてみました。


















この記事へのコメントはありません。