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のパターンで速攻理解!
更新日:2024年4月29日

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

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

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


請求書管理ツールの事例

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

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

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

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

まとめ

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

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

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

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次