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:\Users\Samurai\Desktop\にある請求書PDF.pdfを開くサンプルです。

サンプルコード:

Sub Sample1()
    CreateObject("Shell.Application").ShellExecute "C:\Users\Samurai\Desktop\請求書PDF.pdf"
End Sub

実行結果:

実行結果

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

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

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

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

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

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

サンプルコード:

Sub Sample2()
    
    '「請求書」がファイル名に含まれているPDFファイルを、Dir関数で取得
    Dim strPDFName As String
    Const strFolderPath = "C:\Users\Samurai\Desktop\部分一致テスト\"
    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:\Users\Samurai\Desktop\にある請求書PDF.pdfを開くサンプルです。

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

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

サンプルコード:

Sub Sample3()
    
    '拡張子が「.pdf」のファイルを、Dir関数で取得
    Dim strPDFName As String
    Const strFolderPath = "C:\Users\Samurai\Desktop\部分一致テスト\"
    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でアプリを作る方法とは?考え方・サンプルの作り方も解説!
更新日 : 2019年8月9日

まとめ

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

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

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

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説