複数枚を綴じているPDFを個別に分割したいけど、どうすればよいかわからない!
そんな方に対して、解決方法をまとめてみました!
Excel(エクセル)のマクロを使ったPDF分割方法についても解説しています!
PDFを分割する理由
PDFを分割する理由には、以下のような目的があります。
- ファイルサイズを小さくする
大きなPDFファイルを複数の小さなファイルに分けることで、管理や共有がしやすくなります。 - 特定のページを抽出する
PDFファイル全体ではなく、特定のページだけを取り出して別のファイルとして保存したい場合があります。 - 特定の範囲で保存する
必要なページを抽出して、新しいPDFを作成することができます。たとえば、会議の議事録の一部を分割したいときなどです。
PDFを分割する方法
PDFを分割する方法には、専用のソフトウェアを使う方法、オンラインツールを使う方法、または手動で行う方法などがあります。ここでは、いくつかの方法を紹介します。
専用ソフトウェアを使用する
PDFを分割する専用のソフトウェアを使うと、簡単にページを抽出したり、特定の範囲で分割することができます。代表的なソフトウェアをいくつか紹介します。
Adobe Acrobat Pro DC
Adobe Acrobat ProはPDF編集ソフトウェアの中で最も人気があり、強力な機能を提供しています。PDFファイルの分割も簡単に行うことができます。
手順:
- Adobe Acrobat Proを開き、分割したいPDFファイルを開きます。
- メニューから「ツール」を選択し、「PDFを分割」を選びます。
- 分割の基準(ページごと、指定ページ範囲ごと、ファイルサイズごと)を選択します。
- 分割後のファイル名を指定し、保存します。
PDFsam Basic
PDFsam Basicは無料でオープンソースのPDF編集ソフトです。シンプルで直感的なインターフェースを持ち、PDFの分割や結合が簡単に行えます。
手順:
- PDFsam Basicをインストールし、起動します。
- 「分割」を選び、分割したいPDFファイルを読み込みます。
- 分割方法(ページ数、特定ページ範囲など)を選択します。
- 保存先を指定して、「実行」をクリックします。
Smallpdf(デスクトップアプリ)
Smallpdfはオンラインツールとしても有名ですが、デスクトップアプリも提供しています。このアプリを使うと、オフラインでも簡単にPDFを分割できます。
手順:
- Smallpdfのデスクトップアプリをインストールし、起動します。
- 「PDFを分割」を選択し、分割するPDFを読み込みます。
- 分割方法(ページごと、範囲指定など)を選択し、分割を実行します。
- 保存先を選んで、分割されたPDFファイルを保存します。
オンラインツールを使用する
専用ソフトがない!会社のPCなのでソフトのインストールができない!
そんな方は、
インターネットに接続されていれば、オンラインツールを使って簡単にPDFを分割できます。これらはソフトウェアをインストールしたくない・できない場合に便利です。
ILovePDF
ILovePDFは、PDFの編集に便利なオンラインツールを提供しており、分割機能も含まれています。
手順:
- ILovePDFのウェブサイトにアクセスします。
- 「PDFを分割」を選択し、分割したいPDFをアップロードします。
- 「ページごとに分割」を選択するか、「範囲を指定して分割」を選択して、分割したいページや範囲を設定します。
- 「PDFを分割」をクリックし、分割されたPDFをダウンロードします。
Smallpdf(オンライン)
Smallpdfのオンライン版も簡単にPDFを分割できるツールです。
手順:
- Smallpdfのウェブサイトにアクセスします。
- 「PDFを分割」を選択し、PDFファイルをアップロードします。
- 分割の方法(ページごと、特定のページ範囲など)を選びます。
- 分割後、ダウンロードリンクが表示されるので、そこから分割されたPDFを保存します。
PDF2Go
PDF2Goは、オンラインでPDFファイルを編集、分割するためのツールを提供しています。無料で使用できますが、ファイルサイズに制限があります。
手順:
- PDF2Goのウェブサイトにアクセスします。
- 「PDFを分割」を選択し、PDFファイルをアップロードします。
- 分割のオプションを設定して、分割を実行します。
- 分割されたファイルをダウンロードします。
手動で分割する方法
PDFのソースコードを直接操作する方法もありますが、これは非常に難易度が高いため、一般的にはおすすめしません。特にプログラム的にPDFを処理するには、Pythonのライブラリ(例えばPyPDF2
)を使用する方法がありますが、プログラム知識が必要です。
VBA(マクロ)を活用した方法
こちらは筆者オリジナルのマクロを使ってPDFを分割する方法です。
筆者で作成したDLLファイルを使用し、VBAのモジュールでコードを記載することで抽出可能です。
また、こちらは筆者がプライベートの仕事で、マクロを使ってPDFから特定ページを抽出し、固定の名前を付けて分割を前提に作成しておりますので用途を変える際はご連絡ください。記事を作成します。
当サイト外でこの方法をご紹介される際は、必ず当サイトのURLを参照するようにしてください。
※PDFのバージョンを変更しファイルに手を加えることから、筆者は今まで何か不具合が起こったことはありませんが、ご自身の責任で下記方法をお試しください。
大前提、マクロを有効化してくださいね(‘◇’)ゞ
準備
まずはマクロ有効エクセルファイルを作成し、エクセルファイルがあるフォルダへ筆者が作成したDLLファイルを置きます。
作業
前提として、A列に分割した後のPDFファイルの名前、B列に分割したいページの始まり、C列に分割したいページの終わりを入力します。
例:元PDFファイルの3ページから6ページを抜き出して「報告書」というファイル名にしたい場合、A列に報告書、B列に3、C列に6と入力する。
PDFデータから一部のページを抽出し、特定のフォルダへ名前を付けて保存するマクロを作ります。

まずは「保存先フォルダを選択」ボタンを作成し、「マクロの登録」から下記コードを入力してください。
保存先フォルダの指定を行います。どこを指定すればわからない際は、デスクトップを選択してください。
Sub フォルダを選択()
Dim TargetFldName As String
Application.FileDialog(msoFileDialogFolderPicker).Title = "パスを入力したいフォルダを選ぶ" 'ダイアログタイトル
If Application.FileDialog(msoFileDialogFolderPicker).Show = True Then 'フォルダを選んでダイアログOK押す
TargetFldName = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) '選択したフォルダのパスを格納
Range("D2").Value = TargetFldName 'D2にフォルダのパスを表示
End If
End Sub
続いて「分割して名前を付ける」ボタンを作成し、「マクロの登録」から下記コードを入力してください。
' PDFDesigner Tools API
Public Declare Function LoadPDF Lib "pdftool.dll" (ByVal OpenFileName As String) As Long
Public Declare Sub FreePDF Lib "pdftool.dll" (ByVal PDF As Long)
Public Declare Function CutPDF Lib "pdftool.dll" (ByVal PDF As Long, ByVal startPos As Long, ByVal endPos As Long, ByVal SaveFileName As String) As Long
' PDFのバージョンを1.4形式にする(コピーしたファイルを編集)
Public Sub ChangePDFVersion(ByVal OpenFileName As String, ByVal SaveFileName As String)
Dim Stream() As Byte ' ストリーム
Dim FileNo As Integer ' ファイルNO
' ファイルを読み込む
FileNo = FreeFile
ReDim Stream(FileLen(OpenFileName) - 1)
Open OpenFileName For Binary As #FileNo
Get #FileNo, , Stream
Close #FileNo
' PDFの形式を1.4にする
Stream(5) = "&H31": Stream(7) = "&H34"
' ファイルの出力
FileNo = FreeFile
Open SaveFileName For Binary Access Write As #FileNo
Put #FileNo, , Stream
Close #FileNo
End Sub
' PDFファイルを抽出する
' StartPos: 開始ページ
' EndPos : 終了ページ
' 戻り値 : 1:成功 -1:失敗
' 備考 : PDFのページ数はGetPDFPageCount()APIで取得可能。詳細は公式サイト参照。
' ※PDFファイルはChangePDFVersion関数で1.4形式にする必要があります。
Public Function vba_CutPDF(ByVal PDF As String, ByVal startPos As Long, ByVal endPos As Long, ByVal SaveFileName As String) As Long
Dim p As Long
Dim tmp As String
Dim Result As Long
' 拡張子をtmpに変換する
tmp = Replace(PDF, ".pdf", ".tmp", compare:=vbTextCompare)
' 元のPDFファイルをコピーしてバージョンを1.4形式に変更する
Call ChangePDFVersion(PDF, tmp)
' PDFファイルを読み込んでハンドルを取得する
p = LoadPDF(tmp)
' PDFファイルのページを抽出する
Result = CutPDF(p, startPos, endPos, SaveFileName)
' PDFファイルのハンドルを解放する
FreePDF (p)
' テンポラリファイルを削除する
Kill (tmp)
vba_CutPDF = Result
End Function
Private Sub CommandButton1_Click()
Dim strFilePath As String
Dim j As Integer
j = 1 ' jの初期化
Dim startPos As Long
Dim endPos As Long
Dim saveFilePath As String
' PDFファイルを選択
strFilePath = Application.GetOpenFilename(Filefilter:="pdfブック,*.pdf")
If strFilePath = "False" Then
MsgBox "ファイルが選択されていません"
Exit Sub
End If
' カレントディレクトリを変更
ChDir ThisWorkbook.path
' データ行をループ
Do Until IsEmpty(Cells(j + 1, 1)) ' 1列目のセルが空でない限り
' 2列目と3列目のセルが空でないかチェック
If Not IsEmpty(Cells(j + 1, 2).Value) And Not IsEmpty(Cells(j + 1, 3).Value) Then
' ページ番号を取得
If IsNumeric(Cells(j + 1, 2).Value) And IsNumeric(Cells(j + 1, 3).Value) Then
startPos = CLng(Cells(j + 1, 2).Value)
endPos = CLng(Cells(j + 1, 3).Value)
' 保存先ファイルパスを作成
saveFilePath = Cells(2, 4).Value & "\" & Cells(j + 1, 1).Value
' PDFを抽出
Call vba_CutPDF(strFilePath, startPos, endPos, saveFilePath)
Else
MsgBox "ページ番号が正しくありません。行 " & (j + 1) & " を確認してください。"
Exit Sub
End If
Else
End If
j = j + 1 ' jをインクリメント
Loop
End Sub
結論
PDFを分割する方法には、専用ソフトウェアを使う方法、オンラインツールを使用する方法、手動で行う方法など、さまざまな選択肢があります。
もちろん一番良いのは、純正のAdobe Acrobat Pro DC
操作が簡単で便利なのはオンラインツールですが、頻繁にPDFを編集する場合やセキュリティ上アップロードするわけにはいかない場合は、専用のPDF編集ソフトを使うと良いでしょう。また、大量のファイルを一度に処理する場合には、バッチ処理機能を持つツールを選ぶことをおすすめします。
特に筆者作成のPDFを分割するマクロは、かなりの人の手助けになるのではないでしょうか。
よろしければ、マクロでPDFを分割する方法として、リンクを入れて紹介いただけますと幸いです!
コメント