VBAでPDFを開きたいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAで複数のPDFを一括で開きたいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VBAで複数のPDFを一括で開く方法
についてまとめます!
もくじ
VBAでPDFを開くするイメージ
VBAでPDFを開くイメージについて説明をします。
Excel側にPDF保存先パスを入力した一覧を作成します。
VBAを実行すると、ExcelリストにあるPDFファイルが開きます。
そんなPDFファイルを開く方法を5パターン紹介していきます。
それでは早速試してみましょう。
VBAでPDFを開く方法1:ハイパーリンクとして開く
VBAでPDFを開く方法1のハイパーリンクとして開く方法について説明をします。
PDF保存先リストを準備する
Excel側にPDF保存先パス一覧をA列に作成します。
このリストに沿って、Excelリスト分のPDFファイルが開く形となります。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub PDFを開く_その1()
Dim intEndrow As Integer
Dim i As Integer
'マクロ実装ブックの1シート目を対象にします。
With ThisWorkbook.Worksheets(1)
'PDF出力先リストの最終行を取得します。
intEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
'2行目から最終行まで処理を繰り返します。
For i = 2 To intEndrow
'ハイパーリンクとしてPDFを開きます。
ThisWorkbook.FollowHyperlink .Cells(i, 1).Value
Next i
End With
End Sub
VBAを設定する
マクロ実装ブックの1シート目を対象にします。シート名を指定したい場合はシート番号「1」をシート名に変更してください。
With ThisWorkbook.Worksheets(1)
PDF出力先リストの最終行を取得します。Excelブック1シート目のA列を対象としていますので、変更する場合は列番号「1」を別の列番号に変更してください。
intEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
2行目から最終行まで処理を繰り返します。開始行が2行目でない場合は変更をしてください。
For i = 2 To intEndrow
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行する
VBAを実行してみましょう。
PDFが開きましたね。
VBAの説明
VBAについて説明をします。
FollowHyperlinkメソッドを使い、PDFのパスをハイパーリンクとして開きます。
ThisWorkbook.FollowHyperlink .Cells(i, 1).Value
FollowHyperlinkメソッドの構文およびパラメータは以下の通りです。
構文 | FollowHyperlink (Address, SubAddress, NewWindow, AddHistory, ExtraInfo, Method, HeaderInfo) |
---|
パラメータ
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
Address | 必須 | String | 有効なハイパーリンク アドレスとして評価される文字列式を指定します。 |
SubAddress | 省略可能 | String | 引数?address?に指定されたドキュメント内のサブアドレスとして評価される文字列式を指定します。 この引数を指定しない場合は、長さ 0 の文字列 (” “) が使用されます。 |
NewWindow | 省略可能 | Boolean | True?(?1)?が新?しいウィンドウでドキュメントを開き、?False?(0) を指定すると、現在のウィンドウでドキュメントが開きます。 既定値は?False?です。 |
AddHistory | 省略可能 | Boolean | 履歴のフォルダーにハイパーリンクを追加する場合はブール型 (Boolean) の値の?True?を指定し、追加しない場合は?False?を指定します。 既定値は?True?です。 |
ExtraInfo | 省略可能 | Variant | ハイパーリンクに移動するために必要な追加情報を、文字列またはバイト型 (Byte) データの配列で指定します。 たとえば、この引数を使用して、.ASP ファイルまたは .IDC ファイルの検索パラメーターを指定します。 Web ブラウザーでは、?extrainfo?引数は、ハイパーリンク アドレスの後に、疑問符 (?) で区切られたアドレスの後に表示される場合があります。 引数?extrainfo?の指定時には、疑問符を含める必要はありません。 |
Method | 省略可能 | MsoExtraInfoMethod | extrainfo 引数の添付方法を指定する MsoExtraInfoMethod?クラスの定数です。 |
HeaderInfo | 省略可能 | String | ヘッダー情報を文字列で指定します。 既定では、?headerinfo 引数?は長さ 0 の文字列です。 |
参考:https://docs.microsoft.com/ja-jp/office/vba/api/access.application.followhyperlink
VBAでPDFを開く方法2:Excelのハイパーリンクを開く
VBAでPDFを開く方法2:Excelのハイパーリンクを開く方法について説明をします。
PDF保存先リストにハイパーリンクを付与する
Excel側に入力したPDF保存先パス一覧にハイパーリンクを付与していきます。
前回はテキストデータをハイパーリンクとして開きましたが、
今回はExcelのハイパーリンク情報をそのまま読み取ってPDFファイルを開いていきます。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub PDFを開く_その2()
Dim intEndrow As Integer
Dim i As Integer
'マクロ実装ブックの1シート目を対象にします。
With ThisWorkbook.Worksheets(1)
'PDF出力先リストの最終行を取得します。
intEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
'2行目から最終行まで処理を繰り返します。
For i = 2 To intEndrow
'ハイパーリンクとしてPDFを開きます。
.Cells(i, 1).Hyperlinks(1).Follow NewWindow:=True
Next i
End With
End Sub
VBAを実行する
VBAを実行してみましょう。
PDFが開きましたね。
VBAの説明
VBAについて説明をします。
Hyperlinksコレクション一つ目にあるハイパーリンクをHyperlink.Followメソッドを使い、PDFファイルを開きます。
Cells(i, 1).Hyperlinks(1).Follow NewWindow:=True
FollowHyperlinkメソッドの構文およびパラメータは以下の通りです。
構文 | Follow (NewWindow、 AddHistory、 ExtraInfo、 メソッド、 HeaderInfo) |
---|
パラメータ
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
NewWindow | 省略可能 | Variant | 新しいウィンドウに目的のアプリケーションを表示するには、この引数に?True?を設定します。 既定値は?False?です。 |
AddHistory | 省略可能 | Variant | 不使用。 将来使用するために予約されています。 |
ExtraInfo | 省略可能 | Variant | ハイパーリンクを解決するための HTTP の追加情報を指定する文字列 (String)、またはバイト配列を指定します。 たとえば、引数?ExtraInfo?を使用すると、イメージ マップの座標、フォームの内容、または FAT ファイル名を指定できます。 |
Method | 省略可能 | Variant | ExtraInfo?の接続方法を指定します。?MsoExtraInfoMethod?クラスの定数のいずれかを使用できます。 |
HeaderInfo | 省略可能 | Variant | HTTP 要求のヘッダー情報を指定する文字列 (String) を指定します。 既定値は空の文字列です。 |
参考:https://docs.microsoft.com/ja-jp/office/vba/api/excel.hyperlink.follow
よろしければご参考ください。
・<a href="https://extan.jp/?p=1787">【Excel VBA】Excelの複数のハイパーリンクを一括でオープンする方法</a>
・<a href="https://extan.jp/?p=2200">Excelのハイパーリンクを一括削除/解除する方法!基本操作とVBAの処理も!</a>
・<a href="https://extan.jp/?p=2081">【Excel VBA】ハイパーリンク付き目次を自動で作成する方法!</a>
・<a href="https://extan.jp/?p=1811">【Excel VBA】複数のハイパーリンクの表示名を一括で変換する方法</a>
VBAでPDFを開く方法3:WshShellオブジェクトのRunメソッドを使う
VBAでPDFを開く方法3:WshShellオブジェクトのRunメソッドでPDFを開く方法について説明をします。
Excel側のPDFパス一覧はテキストのみ、ハイパーリンク付きどちらでも問題ありません。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub PDFを開く_その3()
Dim intEndrow As Integer
Dim i As Integer
'マクロ実装ブックの1シート目を対象にします。
With ThisWorkbook.Worksheets(1)
'PDF出力先リストの最終行を取得します。
intEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
'2行目から最終行まで処理を繰り返します。
For i = 2 To intEndrow
'WshShellオブジェクトのRunメソッドでPDFを開きます。高速です。
CreateObject("WScript.Shell").Run .Cells(i, 1).Value
Next i
End With
End Sub
VBAを実行する
VBAを実行してみましょう。
PDFが開きましたね。
VBAの説明
VBAについて説明をします。
WshShellオブジェクトのRunメソッドでPDFファイルを開きます。方法1,2よりは高速です。
CreateObject("WScript.Shell").Run .Cells(i, 1).Value
VBAでPDFを開く方法4:WshShellオブジェクトのExecメソッドでchrome.exeを使う
VBAでPDFを開く方法4:WshShellオブジェクトのExecメソッドでchrome.exeを使いPDFを開く方法について説明をします。
Excel側のPDFパス一覧はテキストのみ、ハイパーリンク付きどちらでも問題ありません。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub PDFを開く_その4()
Dim intEndrow As Integer
Dim i As Integer
'マクロ実装ブックの1シート目を対象にします。
With ThisWorkbook.Worksheets(1)
'PDF出力先リストの最終行を取得します。
intEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
'2行目から最終行まで処理を繰り返します。
For i = 2 To intEndrow
'WshShellオブジェクトのExecメソッドでchrome.exeを使いPDFを開きます。高速です。
CreateObject("WScript.Shell").Exec ("C:\Program Files\Google\Chrome\Application\chrome.exe" & " " & .Cells(i, 1).Value)
Next i
End With
End Sub
VBAを実行する
VBAを実行してみましょう。
PDFが開きましたね。
VBAの説明
VBAについて説明をします。
WshShellオブジェクトのExecメソッドでchrome.exeを使いPDFを開きます。方法1,2よりは高速です。
CreateObject("WScript.Shell").Exec ("C:\Program Files\Google\Chrome\Application\chrome.exe" & " " & .Cells(i, 1).Value)
なおChrome以外にAdobeAcrobatやEdgeなどの指定が可能です。
類似のコード
Sub PDFを開く_その4a()
Dim intEndrow As Integer
Dim i As Integer
'マクロ実装ブックの1シート目を対象にします。
With ThisWorkbook.Worksheets(1)
'PDF出力先リストの最終行を取得します。
intEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
'2行目から最終行まで処理を繰り返します。
For i = 2 To intEndrow
'Shellでchrome.exeを使いPDFを開きます。高速です。
Shell "C:\Program Files\Google\Chrome\Application\chrome.exe" & " " & .Cells(i, 1).Value, vbNormalFocus
Next i
End With
End Sub
Shellでchrome.exeを使いPDFを開くこともできます。
Shell "C:\Program Files\Google\Chrome\Application\chrome.exe" & " " & .Cells(i, 1).Value, vbNormalFocus
VBAでPDFを開く方法5:Shell.ShellExecuteメソッドを使う
VBAでPDFを開く方法5:Shell.ShellExecuteメソッドでPDFを開く方法について説明をします。
Excel側のPDFパス一覧はテキストのみ、ハイパーリンク付きどちらでも問題ありません。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub PDFを開く_その5()
Dim intEndrow As Integer
Dim i As Integer
'マクロ実装ブックの1シート目を対象にします。
With ThisWorkbook.Worksheets(1)
'PDF出力先リストの最終行を取得します。
intEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
'2行目から最終行まで処理を繰り返します。
For i = 2 To intEndrow
'Shell.ShellExecuteメソッドでPDFを開きます。高速です。
CreateObject("Shell.Application").ShellExecute .Cells(i, 1).Value
Next i
End With
End Sub
VBAを実行する
VBAを実行してみましょう。
PDFが開きましたね。
VBAの説明
VBAについて説明をします。
Shell.ShellExecuteメソッドでPDFを開きます。方法1,2よりは高速です。
CreateObject("Shell.Application").ShellExecute .Cells(i, 1).Value
Shell.ShellExecuteメソッドの構文およびパラメータは以下の通りです。
構文 | Shell.ShellExecute( sFile, vArguments, vDirectory, vOperation, vShow ) |
---|
パラメータ
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
sFile | 必須 | Variant | ファイル名 |
vArguments | 省略可能 | Variant | パラメータ値を含む文字列 |
vDirectory | 省略可能 | Variant | sFileで指定されたファイルを含むディレクトリの完全修飾パス。 |
vOperation | 省略可能 | Variant | ファイルでサポートされている動詞文字列(open等)の1つに設定されます。 |
vShow | 省略可能 | Variant | アプリケーション ウィンドウを最初に表示する方法に関する推奨事項。 このパラメーターには、次の値のいずれかを指定できます。 |
値 | 説明 |
---|---|
0 | 非表示ウィンドウでアプリケーションを開きます。 |
1 | 通常のウィンドウでアプリケーションを開きます。 ウィンドウが最小化または最大化されている場合、システムはそれを元のサイズと位置に復元します。 |
2 | 最小化されたウィンドウでアプリケーションを開きます。 |
3 | 最大化されたウィンドウでアプリケーションを開きます。 |
4 | ウィンドウが最新のサイズと位置でアプリケーションを開きます。 アクティブなウィンドウはアクティブなままになります。 |
5 | 現在のサイズと位置にあるウィンドウでアプリケーションを開きます。 |
7 | 最小化されたウィンドウでアプリケーションを開きます。 アクティブなウィンドウはアクティブなままになります。 |
10 | アプリケーションによって指定された既定の状態のウィンドウでアプリケーションを開きます。 |
参考:https://docs.microsoft.com/ja-jp/windows/win32/shell/shell-shellexecute
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・VBAで複数のPDFを一括で開く方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す