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でPDFを開く処理の使いどころ
次に、VBAでPDFを開く処理の使いどころについて解説します。
PDFからデータ転記する場合などもそうですが、一覧データに紐づいたPDFのデータを見たいときによく使います。たとえば、次のようなケースですね。
たとえば、請求書番号「A0000001」に紐づいた請求書・納品書などを一括で確認したいとき、フォルダから検索することは手間ですよね。できれば、ボタンクリックのみで表示出来たほうが効率的です。
このようなときに、請求書番号「A0000001」がファイル名に入っているPDFファイルを一括で開く処理を作っておくことで、作業を効率化することができるのです。
ちなみに、請求データの登録や管理をアプリ化して作っておくことで、更に効率化することができます。以下でアプリの作り方を詳しく解説しているので、興味がある方は見てみてくださいね!
まとめ
今回は、VBAでPDFを開く方法について解説しました。
ただ開く方法を覚えておくだけでなく、色んなパターンで開けるようにサンプルを知っておくことが重要です。
ぜひ、自分でコードを書いて動かしてみてくださいね!