VBAでPDFファイルを開く方法とは?使いどころも徹底解説!


VBAからPDFファイルを開く方法がわからない・・・
できれば具体的な方法だけでなくサンプルも知りたいな・・・

VBAにある程度慣れてくると、より実務に活かせる処理を作りたいと思いますよね。たとえば、PDFのデータをExcelに書き込む操作をしている場合、VBAでPDFが開けるようになったほうが効率的です。ただ、具体的な方法がわからないという方も多いのではないでしょうか。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、VBAでPDFを開く方法について解説します。

1つのPDFを開く方法だけでなく、複数ファイルを一括で開く方法も解説しています。実務に即活かせるサンプルコードも載せていますので、ぜひ最後まで見てみてくださいね!

この記事はこんな人のために書きました。

  • VBAからPDFを開く方法を知りたい人
  • Excel・PDF間の操作を効率化したい人

VBAでPDFを開く方法とは?

はじめに、VBAでPDFを開く方法について解説します。

VBAからPDFを開く場合は、Shellを使えばOKです。具体的には、次のようにCreateObjectからShellを呼び出して使います。

PDFファイルを開く方法:

CreateObject("Shell.Application").ShellExecute PDFのファイルパス

ファイルパスを指定するだけで開くことができるので、とても簡単ですね。PDF以外にも使える方法なので、覚えておくととても便利です。

ただ、1つのファイルだけでなく、フォルダ内のファイルを一括で開きたいケースもありますよね。そのため、ファイルを指定する方法をいくつか知っておくと便利です。

VBAでPDFを開くサンプル

次に、VBAでPDFを開くサンプルをご紹介します。

以下についてそれぞれ解説しますね。

  • 完全一致で開く方法
  • 部分一致で開く方法
  • 複数ファイルを一括で開く方法

サンプル1:完全一致で開く方法

1つ目は、完全一致で開く方法についてです。1つのファイルを指定して開きたいときは、この方法を使えばOKです。

具体的なサンプルコードを使って解説します。以下はC:UsersSamuraiDesktopにある請求書PDF.pdfを開くサンプルです。

サンプルコード:

Sub Sample1()
    CreateObject("Shell.Application").ShellExecute "C:UsersSamuraiDesktop請求書PDF.pdf"
End Sub

実行結果:

実行結果

このように直接ファイルパスをShellのShellExecuteの後に指定するだけで、簡単に開くことができます。PDFを開くときの基礎なので、ぜひ覚えましょう!

サンプル2:部分一致で開く方法

2つ目は、部分一致で開く方法についてです。ファイル名に特定の文字があるPDFファイルを、一括で開きたいときにおすすめの方法ですね。

具体的なサンプルコードを使って解説します。以下はC:UsersSamuraiDesktopにある請求書PDF.pdfを開くサンプルです。

指定フォルダにあるファイル一覧:

指定フォルダにあるファイル一覧

サンプルコード:

Sub Sample2()
    
    '「請求書」がファイル名に含まれているPDFファイルを、Dir関数で取得
    Dim strPDFName As String
    Const strFolderPath = "C:UsersSamuraiDesktop部分一致テスト"
    strPDFName = Dir(strFolderPath & "*請求書*")
        
    '「請求書」がファイル名に含まれている限り処理をループ
    Do While strPDFName <> ""
        'PDFファイルを開く
        CreateObject("Shell.Application").ShellExecute strFolderPath & strPDFName
                
        '次のPDFファイル名を取得
        strPDFName = Dir()
    Loop
    
End Sub

実行結果:

実行結果

Dir関数にワイルドカード(*)を指定し、「請求書」の文字列が含まれているファイル名を取得しています。取得したファイル名が空になるまでDo While文でPDFファイルを開く処理を実行することで、「請求書」が含まれたファイルを一括で開いています。

このように、Dir関数を使えば複数ファイルを一括で開くことができます。

サンプル3:特定フォルダのファイルを一括で開く方法

3つ目は、特定フォルダのファイルを一括で開く方法についてです。部分一致でファイルを開く方法とほとんど同じですが、こちらも覚えておくと便利です。

具体的なサンプルコードを使って解説します。以下はC:UsersSamuraiDesktopにある請求書PDF.pdfを開くサンプルです。

指定フォルダにあるファイル一覧:

指定フォルダにあるファイル一覧

サンプルコード:

Sub Sample3()
    
    '拡張子が「.pdf」のファイルを、Dir関数で取得
    Dim strPDFName As String
    Const strFolderPath = "C:UsersSamuraiDesktop部分一致テスト"
    strPDFName = Dir(strFolderPath & "*.pdf")
        
    '拡張子が「.pdf」のファイルがある限り、処理をループ
    Do While strPDFName <> ""
        'PDFファイルを開く
        CreateObject("Shell.Application").ShellExecute strFolderPath & strPDFName
                
        '次のPDFファイル名を取得
        strPDFName = Dir()
    Loop
    
End Sub

実行結果:

実行結果

Dir関数のワイルドカードの指定を「*.pdf」にすることで、指定したフォルダのPDFファイルを一括で開くことができました。このように、Dir関数と組み合わせて覚えておくと、応用が効くのでおすすめです!

ちなみに、Dir関数の詳しい使い方については以下で解説しています。興味がある方は、以下を見てみてくださいね!

VBAでファイル名を取得するには?3+1のパターンで速攻理解!
更新日 : 2019年4月25日

VBAでPDFを開く処理の使いどころ

次に、VBAでPDFを開く処理の使いどころについて解説します。

PDFからデータ転記する場合などもそうですが、一覧データに紐づいたPDFのデータを見たいときによく使います。たとえば、次のようなケースですね。


請求書管理ツールの事例

たとえば、請求書番号「A0000001」に紐づいた請求書・納品書などを一括で確認したいとき、フォルダから検索することは手間ですよね。できれば、ボタンクリックのみで表示出来たほうが効率的です。

このようなときに、請求書番号「A0000001」がファイル名に入っているPDFファイルを一括で開く処理を作っておくことで、作業を効率化することができるのです。

ちなみに、請求データの登録や管理をアプリ化して作っておくことで、更に効率化することができます。以下でアプリの作り方を詳しく解説しているので、興味がある方は見てみてくださいね!

VBAでアプリを作る方法とは?考え方・サンプルの作り方も解説!
更新日 : 2020年3月3日

まとめ

今回は、VBAでPDFを開く方法について解説しました。

ただ開く方法を覚えておくだけでなく、色んなパターンで開けるようにサンプルを知っておくことが重要です。

ぜひ、自分でコードを書いて動かしてみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。