【Excel VBA】PDFを開く方法5選!複数一括OPENも可!

VBAでPDFを開きたいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAでPDFを開きたいが方法がよくわからない
・VBAで複数のPDFを一括で開きたいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・VBAでPDFを開く方法5選
・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

タカヒロ
タカヒロ
設定内容はほかのパターンも同様ですので、2つめ以降の設定に関する説明は割愛します。

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行する

VBAを実行してみましょう。

PDFが開きましたね。

VBAの説明

VBAについて説明をします。

FollowHyperlinkメソッドを使い、PDFのパスをハイパーリンクとして開きます。

ThisWorkbook.FollowHyperlink .Cells(i, 1).Value

タカヒロ
タカヒロ
ThisWorkbookはVBAを実行するブックを指します。

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の実行先パスはChromeアイコンを右クリックしてプロパティから参照してください。
なお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を開く方法5選
・VBAで複数のPDFを一括で開く方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です