PDFファイルを他のファイルに変換したいときがあります。
例えば、PDFの情報をエクセルで計算できるようにしたりワードで再加工したりする場合です。
他にもパワーポイントに変換して、PDF情報をそのままパワーポイント資料として使いたいときもあります。
このとき、変換したいPDFファイルが2,3コであれば、1ファイルずつ変換できます。
しかし、複数のPDFファイルを一度に変換するとなると作業に時間がかかってしまいます。
そこでマクロVBAを活用して、複数PDFファイルを一括でエクセル、ワード、パワポ、テキスト、画像(JPEG)に変換する方法を紹介します。
Adobeのソフトさえあればすぐに実行できるので、ぜひ試してみてください。
目次
複数PDFファイルを一括でエクセル、ワード、パワポ、テキスト、画像に変換する方法
複数PDFファイルをエクセル、ワード、パワポ、テキスト、画像に一括変換する方法について具体的に紹介していきます。
具体的には、以下のような作業で一括変換を行います。
ステップ2|エクセルを起動して、一括変換ボタンを押す
ステップ3|変換されたPDFがフォルダ内に保管される
以下で画像を使いながら、詳しく説明していきます。
ステップ1|一括変換したいPDFファイルを指定したフォルダ(変換したい拡張子)に保管する
PDFファイルを「変換したいファイルの名前が付いたフォルダ」へ移動させます。
このときPDFファイルを保管するフォルダは以下のように場合分けします。
2|画像(JPEG)に変換したいPDFファイルは「ToJPEG」フォルダへ
3|パワーポイントに変換したいPDFファイルは「ToPowerPoint」フォルダへ
4|テキストに変換したいPDFファイルは「ToText」フォルダへ
5|ワードに変換したいPDFファイルは「ToWord」フォルダへ
例えばPDFファイルをエクセルに変換したい場合は、1の「ToExcel」フォルダに移動します。
また、パワーポイントとワードの両方に変換したい場合は、3の「ToPowerPoint」フォルダと5の「ToWord」フォルダにそれぞれ移動します。
ここでは、「Document.pdf」というPDFファイルをエクセル、JPEG、パワーポイント、テキスト、ワードの5つのファイルにそれぞれ変換したいとします。
したがって、上記の1~5の各フォルダに「Document.pdf」というPDFファイルを保管します。
ステップ2|エクセルを起動して、一括変換ボタンを押す
ステップ3|変換されたPDFがフォルダ内に保管される
以下の赤枠で示したように変換されたPDFファイルが、フォルダ内に保存されます。
画像(jpeg)に関しては、1ページにつき1ファイルずつ新規ファイルとして保管されます。
「Document.pdf」というPDFファイルには11ページあるので、11ファイルのjpegが作成されます。
補足ですが、1ファイル変換するのに4,5秒かかる場合があります。
ファイル数が多いと時間がかかるので、プログラムが完了するまで待っていてください。
ステップ2で使ったマクロに関しては、本記事の後半でエクセルVBAのプログラムを公開しています。
ぜひコピペして活用ください。
複数のPDFファイルを一括変換できるzipファイルを無料ダウンロードする
設定が面倒な人は、zipファイルをダウンロードできるようにしておきました。
解凍すれば、上記のステップ1~ステップ3で紹介した内容をそのまま使うことができます。
以下のフォームにメールアドレスを入力いただくと、返信メールからエクセルファイルをダウンロードできます。
ぜひダウンロードしてみてください。
ただ一点注意があります。ダウンロードしたファイルを使うにはAcrobat Pro(有料版)を利用しないといけないことです。
あなたが使っているパソコンにAcrobat Readerしか含まれていなかったとしたら、VBAでPDF操作はできません。
そのため、PDFを操作する場合は、Acrobat Proを購入しておく必要があります。
もしAcrobat Proを利用していなければ、ダウンロードしたエクセルでエラーが出ます。
Acrobat Proはこちらから試すことができます。
もしAcrobat Proに未加入であれば、加入してからダウンロードファイルを活用ください。
VBAのプログラムを作る前にAcrobat、FSO操作の参照設定を行う
それでは、この記事で紹介するエクセルVBAのプログラム作成方法について解説をしていきます。
まずは、エクセルVBAでPDFを操作するための準備についてお伝えします。
それは、VBEの参照設定を変更することです。参照設定とは、機能拡張のことです。
このプログラムを使うのには、参照設定で以下の2つをライブラリに追加する必要があります。
1.VBEを開いて頂いて、「ツール」→「参照設定」
2.この二つのライブラリにチェックを入れて、OKをクリック
・Acrobat
・Microsoft Scripting Runtime
この設定を変更しないとマクロが動きません。忘れずに設定するようにしてください。
参照の設定手順|VBEの参照設定でAcrobatとMicrosoft Scripting Runtimeを追加
VBAでPDFを操作できるようにするために、AcrobatとMicrosoft Scripting Runtimeにチェックを入れます。
具体的な設定方法は以下の通りです。
1.VBEを開いて、「ツール」→「参照設定」
2.以下の2項目にチェックを入れて、OKをクリック
・Microsoft Scripting Runtime
●Acrobatはこちら
●MicroSoft Scripting Runtimeはこちら
Microsoft Scripting Runtimeにチェックを入れる理由は、特定フォルダ内のPDFファイルを読み込む際にMicrosoft Scripting Runtimeを利用するからです。
注意|Acrobat操作には、Acrobat Proを利用する必要がある
あなたが使っているパソコンにAcrobat Readerしか含まれていなかったとしたら、VBAでPDF操作はできません。
そのため、PDFを操作する場合は、Acrobat Proを購入しておく必要があります。参照設定で、Acrobatをチェックできないならば、Acrobat Proに登録されていないことを意味しています。
したがって、こちらからAcrobat Proを試すことができます。なお、Acrobat Standardでも可能だと思われますが、検証しておりません。
PDFのテキストを読み込み、エクセルに一覧にするプログラム
プログラムは以下のとおりです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
Option Explicit Sub FolderCheck() 'ステップ1|変数定義 Dim i As Long Dim FileName, path, xmlpath As String Dim ws1, ws2 As Worksheet Dim fs As FileSystemObject Dim basefolder As Scripting.Folder Dim destifolder, FilePath As String Dim mysubfiles As Scripting.Files Dim mysubfile As Scripting.File Dim myArray(4) As String 'ステップ2|変数設定 Set ws1 = Worksheets(Sheet1) Set fs = New Scripting.FileSystemObject 'ステップ3|フォルダ名を配列に格納する myArray(0) = ToExcel myArray(1) = ToWord myArray(2) = ToPowerPoint myArray(3) = ToText myArray(4) = ToJPEG 'ステップ4|変換したいファイルを保管する5つのフォルダ '(「ToExcel」から「ToJPEG」まで)を順に読み込む For i = 0 To UBound(myArray) FilePath = ThisWorkbook.path ; \ ; myArray(i) Set basefolder = fs.GetFolder(FilePath) Set mysubfiles = basefolder.Files 'ステップ5|5つの各フォルダ内のファイルを一つずつ調べる For Each mysubfile In mysubfiles 'ステップ6|拡張子が「pdf」のファイルのみを選択する If fs.GetExtensionName(path:=mysubfile) = pdf Then path = fs.GetParentFolderName(path:=mysubfile) 'ステップ7|ConvertFileのプロシージャへ移動する Call ConvertFile(mysubfile.Name, mysubfile, fs.GetExtensionName(mysubfile), myArray(i)) End If Next Set basefolder = Nothing Set mysubfiles = Nothing Next End Sub Sub ConvertFile(FileName, FilePath, ExType, myArray) 'ステップ7-1|変数定義 Dim objAcroApp As New Acrobat.AcroApp Dim objAcroAVDoc As New Acrobat.AcroAVDoc Dim objAcroPDDoc As Acrobat.AcroPDDoc Dim id As Long Dim js As Object Dim SaveName As String 'ステップ7-2|変数設定 id = objAcroApp.Show id = objAcroAVDoc.Open(FilePath, ) 'ステップ7-3|JavaScriptオブジェクトを作成する。 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc() Set js = objAcroPDDoc.GetJSObject 'ステップ7-4|変換後の保管パスを指定する SaveName = ThisWorkbook.path ; \ ; Replace(FileName, .pdf, ) 'ステップ7-5|ファイル保存時のエラー回避を行う Application.DisplayAlerts = False 'ステップ7-6|変換したいファイル別に分岐させる If myArray = ToExcel Then js.SaveAs SaveName ; .xlsx, com.adobe.acrobat.xlsx ElseIf myArray = ToWord Then js.SaveAs SaveName ; .docx, com.adobe.acrobat.docx ElseIf myArray = ToPowerPoint Then js.SaveAs SaveName ; .pptx, com.adobe.acrobat.pptx ElseIf myArray = ToText Then js.SaveAs SaveName ; .txt, com.adobe.acrobat.plain-text ElseIf myArray = ToJPEG Then js.SaveAs SaveName ; .jpeg, com.adobe.acrobat.jpeg End If 'ステップ7-7|変換処理の待ち時間 Application.Wait Now + TimeValue(00:00:02) 'ステップ7-8|ステップ7-5をもとに戻す Application.DisplayAlerts = True 'ステップ7-9|PDFファイルを変更無しで閉じます。 id = objAcroAVDoc.Close(1) 'ステップ7-10|Acrobatアプリケーションを終了する。 id = objAcroApp.Hide id = objAcroApp.Exit Set js = Nothing Set objAcroAVDoc = Nothing Set objAcroApp = Nothing End Sub |
プログラムの解説は要望があれば行います。
もし、詳しく知りたい人は問い合わせから質問してみてください。
VBAを使ったPDF操作について、もっと知りたいなら
エクセルVBAを使ったPDF操作する方法について、解説した記事を紹介します。
PDF操作を習得より、VBA基礎作りが先決
エクセルVBAを使ってPDFを他のファイルに変換する方法について事例で紹介しました。
ここで紹介したコードを編集して利用すれば、さらに高度なこともできるようになります。
しかし、PDF操作のプログラムを編集するといっても、「私にできるかな、、、」と感じている方もいるかもしれません。
もし、そのように感じているなら、それはマクロの基本がまだできていない証拠です。
実際、エクセルVBA初心者がPDF操作でエラーを起こすと、一人で解決するのはムズカシイでしょう。
もし、このプログラムをみて、レベルが高いなと感じたら、VBAの基本から学びなおすことをオススメします。
VBAの基本が分かれば、PDFだけでなくアウトルックやIE操作も本当の意味で理解できるようになります。
きちんと学ぶなら、こちらの無料動画がオススメです。基礎を確実に学んでから、トライしてみてください。
「マクロの力を実感したい」と感じているなら、こちらの記事がオススメです。マクロが入ったエクセルファイルをダウンロードできるようにしています。
もし詳細が知りたいなら、以下の記事で紹介していますので、合わせて読んでみてください。
サンプル1|月末処理の自動処理する
サンプル2|エクセルで在庫管理するマクロ
サンプル3|outlookのメールを自動送信する
サンプル4|outlookの受信メールをエクセルに一覧にして、添付ファイルも保管する
サンプル5|エクセルマクロVBAで大量データを比較・照合してマッチングする方法
サンプル6|ウェブの情報を自動取得して、エクセルに出力する
サンプル7|エクセルの情報をワードに差し込み、印刷まで行う
ぜひご活用ください。