Accessからページ指定してPDFファイルを開ける

スポンサーリンク

前回、ハイパーリンクを使って、PDFファイルを開く方法をご紹介しました。

AccessからPDFファイルを開ける(FollowHyperlinkを使用する)
AccessからPDFファイルを開けるサンプルです。ハイパーリンクを使用し、.pdfの拡張子に関連付けされたアプリが開きます。

ただ開けるだけならこの方法で良いのですが、PDFファイルを開けることができたら、次はページ指定して開いたら使い勝手が良くなるのではないか、と思ったのです。

ネット上のPDFファイルは、ページ指定して開く(リンクする)ことができるので、Accessからでもできそうだなと思ったんです。

そこで、調べてみました。

スポンサーリンク

ローカルドライブ上のPDFにURLのオプションは使えません

アドビ社のHPによると、Web上にあるPDFファイルでしたら、URLの後ろにオプションを設定することでPDFのページを指定して開くこともできますが(4ページを指定するときは、#page=4 を加える。)、残念なことに、ローカルハードドライブ上のPDFファイルに対しては、このオプションが使用できないそうです。

PDF ファイル内の特定のページに HTML リンクをターゲットにするには、リンクの URL の末尾に「#page=[ページ番号]」を追加します。

例えば、次の HTML タグは、myfile.pdf という PDF ファイルの 4 ページを開きます。

<A HREF=”http://www.example.com/myfile.pdf#page=4″>

注意:リンクに UNC サーバーの場所(\\servername\folder)を使用する場合は、次のセクションの手順を使用して、設定先に開くようにリンクを設定します。ローカルハードドライブのアドレス(c:\folder\)を含む URL を使用する場合は、ページ番号または設定先にリンクできません。ページ番号へのリンクは、HTTP または HTTPS の場所を使用する場合にのみ機能します。 UNC サーバーの場所は、このドキュメントの次のセクションで概説する、設定先メソッドを使用する場合にのみ機能します。

https://helpx.adobe.com/jp/acrobat/kb/link-html-pdf-page-acrobat.html から引用

つまり、ハイパーリンクを使って、URLの構文でページ指定してPDFファイルを開くことはできないようです。

さらに調べてみると、コマンドラインでページ指定して開く方法を見つけました。

ですが、そのサンプルコードは、アクロバットリーダーのアプリのパスを指定して起動するもの。

パソコンの構成によっては、書き換える必要があります。

そこで、前回、デスクトップのパスを取得するのに使用した「Windows Script Host」を使って、アクロバットリーダーの実行ファイルである「Acrobat.exe」を起動し、ページ指定してPDFファイルを開きたいと思います。

そうそう、外部からPDFファイルを動かすとなると、有償版のアクロバットが必要なことが多いのですが、このコードは無償版のアクロバットリーダーで動作します!

スポンサーリンク

VBAからアクロバットリーダーを起動させる

まずは、アクロバットリーダーを起動させるコードの紹介です。

ちなみに、和休のパソコンのアクロバットリーダーのバージョンは、2021.011.20039でした。

使用される際は、そちらの環境で十分テストのうえ使用してください。

Sub Sample1()

Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
wsh.Run ("Acrobat.exe")
End Sub
アクロバットリーダーが開いたところ

アクロバットリーダーが起動したら、成功です。

(b^ー°)

スポンサーリンク

VBAからページ指定してPDFファイルを開く

いよいよ本題です。

コマンドラインから4ページを指定してPDFファイルを開く場合、

「アクロバットリーダーのフルパス」 /a page=4 「開きたいPDFファイルのフルパス」

という記述で開きます。

これをVBAに応用します。

AccessファイルとPDFファイル

Fドライブの「PDFファイルを開く」という名前のフォルダにある「100ページあるPDF.pdf」の4ページ目を開く例です。

使用される際は、そちらの環境で十分テストのうえ使用してください。

Sub Sample2()

Dim wsh As Object
Dim strTgTFLE '開けたいPDFファイルのフルパス
Dim PG_NO As Long 'ページ番号
Dim wsh_CMD As String 'WSHに渡すコマンド

Set wsh = CreateObject("WScript.Shell")
strTgTFLE = "F:\PDFファイルを開く\100ページあるPDF.pdf"
PG_NO = 4 '4ページを指定

'WSHに渡すコマンドを組み立てる
wsh_CMD = "Acrobat.exe /a page=" & PG_NO & " " & strTgTFLE

wsh.Run (wsh_CMD)
End Sub
PDFファイルの4ページ目を開いたところ
100ページあるPDFファイルの4ページ目が開いています

PDFファイルが開いて、4ページ目に移動したら成功です。

(b^ー°)

コメントをどうぞ!

タイトルとURLをコピーしました