パソコンスキルの教科書

パソコンスキルの教科書

東京大学大学院卒。博士課程に進学を志すも、担当教授と折が合わず、無職になる。医者を目指すも結局断念。田舎で派遣社員として働く。「スキルがなければ、仕事ももらえない」と悟り、ビジネススキルを学ぶ。プログラミング、英語を学び、一部上場企業へ転職。年間100時間以上の業務効率化を行い、社内講師に抜擢。海外の案件を担当し、数億円のプロジェクトに携わる。個人の事業でも、月売上100万を達成。現在は、自分の価値を高めるためのスキル向上支援を行う

複数PDFファイルを一括変換!エクセル/ワード/パワポ/テキスト化するマクロVBA

f:id:gene320:20181229192638j:plain

PDFファイルを他のファイルに変換したいときがあります。

例えば、PDFの情報をエクセルで計算できるようにしたりワードで再加工したりする場合です。

他にもパワーポイントに変換して、PDF情報をそのままパワーポイント資料として使いたいときもあります。

このとき、変換したいPDFファイルが2,3コであれば、1ファイルずつ変換できます。

しかし、複数のPDFファイルを一度に変換するとなると作業に時間がかかってしまいます。

そこでマクロVBAを活用して、複数PDFファイルを一括でエクセル、ワード、パワポ、テキスト、画像(JPEG)に変換する方法を紹介します。

Adobeのソフトさえあればすぐに実行できるので、ぜひ試してみてください。

複数PDFファイルを一括でエクセル、ワード、パワポ、テキスト、画像に変換する方法

複数PDFファイルをエクセル、ワード、パワポ、テキスト、画像に一括変換する方法について具体的に紹介していきます。

具体的には、以下のような作業で一括変換を行います。

ステップ1|一括変換したいPDFファイルを指定したフォルダ(変換したい拡張子)に保管する
ステップ2|エクセルを起動して、一括変換ボタンを押す
ステップ3|変換されたPDFがフォルダ内に保管される

以下で画像を使いながら、詳しく説明していきます。

ステップ1|一括変換したいPDFファイルを指定したフォルダ(変換したい拡張子)に保管する

PDFファイルを「変換したいファイルの名前が付いたフォルダ」へ移動させます。

f:id:gene320:20181229193313j:plain

このときPDFファイルを保管するフォルダは以下のように場合分けします。

1|エクセルに変換したいPDFファイルは「ToExcel」フォルダ
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ファイルを保管します。

f:id:gene320:20181229181220j:plain

ステップ2|エクセルを起動して、一括変換ボタンを押す

f:id:gene320:20181229181321j:plain

f:id:gene320:20181229181436j:plain

ステップ3|変換されたPDFがフォルダ内に保管される

以下の赤枠で示したように変換されたPDFファイルが、フォルダ内に保存されます。

f:id:gene320:20181229181743j:plain

画像(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を利用していなkれば、ダウンロードしたエクセルでエラーが出ます。

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を開いて、「ツール」→「参照設定」

f:id:gene320:20170613213650p:plain

2.以下の2項目にチェックを入れて、OKをクリック

・Acrobat
・Microsoft Scripting Runtime

●Acrobatはこちら

f:id:gene320:20171229230846p:plain

●MicroSoft Scripting Runtimeはこちら

f:id:gene320:20171229013436p:plain

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のテキストを読み込み、エクセルに一覧にするプログラム

プログラムは以下のとおりです。

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操作する方法について、解説した記事を紹介します。

www.fastclassinfo.com

www.fastclassinfo.com

www.fastclassinfo.com

www.fastclassinfo.com

www.fastclassinfo.com

PDF操作を習得より、VBA基礎作りが先決

エクセルVBAを使ってPDFを他のファイルに変換する方法について事例で紹介しました。

ここで紹介したコードを編集して利用すれば、さらに高度なこともできるようになります。

しかし、PDF操作のプログラムを編集するといっても、「私にできるかな、、、」と感じている方もいるかもしれません。

もし、そのように感じているなら、それはマクロの基本がまだできていない証拠です。

実際、エクセルVBA初心者がPDF操作でエラーを起こすと、一人で解決するのはムズカシイでしょう。

もし、このプログラムをみて、レベルが高いなと感じたら、VBAの基本から学びなおすことをオススメします。

VBAの基本が分かれば、PDFだけでなくアウトルックやIE操作も本当の意味で理解できるようになります。

きちんと学ぶなら、こちらの無料動画がオススメです。基礎を確実に学んでから、トライしてみてください。

この記事を読んだ方へのオススメ

「マクロの力を実感したい」と感じているなら、こちらの記事がオススメです。マクロが入ったエクセルファイルをダウンロードできるようにしています。

もし詳細が知りたいなら、以下の記事で紹介していますので、合わせて読んでみてください。

サンプル1|月末処理の自動処理する
サンプル2|エクセルで在庫管理するマクロ
サンプル3|outlookのメールを自動送信する
サンプル4|outlookの受信メールをエクセルに一覧にして、添付ファイルも保管する
サンプル5|エクセルマクロVBAで大量データを比較・照合してマッチングする方法
サンプル6|ウェブの情報を自動取得して、エクセルに出力する
サンプル7|エクセルの情報をワードに差し込み、印刷まで行う

ぜひご活用ください。

エクセルマクロでできることを知りたいなら

www.fastclassinfo.com

エクセルマクロを独学で習得したいなら

www.fastclassinfo.com

エクセルマクロとは?もっと詳しく知りたいなら

www.fastclassinfo.com

エクセルマクロの難易度や習得までの期間を知りたいなら

www.fastclassinfo.com