ExcelVBAのWebBrowserとsetZoomScrollでPDFの表示位置を調整する方法

ExcelVBAのImageコントロールではPDFは表示できない

1はExcelVBAに元々あるImageコントロールを使ったコードです。最初は、これを使えばもしかしたらいけるんじゃないかと思って、コードをいろいろといじってみましたが駄目でした。ちなみにImageコントロールで表示できる拡張子は以下のようになっています。

  • ビットマップ (*.bmp)
  • JPEG (*.jpg)
  • カーソル (*.cur)
  • メタファイル (*.wmf)
  • 拡張メタファイル (*.emf)
  • GIF (*.gif)
  • ランレングス (*.rle)
  • アイコン (*.ico)

「Image」というぐらいですからJPEGやビットマップはいけるだろうと思っていました。今回良い機会なので一度Imageコントロールで使える拡張子の一覧を調べてみましたが、意外と使える拡張子が多いことに驚きます。けれどもこの一覧の中には「.pdf」の拡張子はありませんね。

 

コードを試行錯誤していた時はもしかしたら「PDF」も表示できるんじゃないかと試してみたが、元々表示できる拡張子は上記のように決まっているので、Imageコントロールで表示はできませんでした。

WebBrowserコントロールを通してのPDFの操作はどうしてもできなかった。だがしかし・・・

2つ目の「WebBrowser1.Document.Body.Style &= “;Zoom:200%”」というコードですが、インターネットで調べたコードを参考にさせていただきました。元々はVBで使われるコードのようです。

 

VBで使われるコードではありますが、VBAはVBをベースに作られたと言われています。ですからその言語環境の関連性などからもしかしたら動作するんじゃないかと淡い期待を抱いていましたが、見事に打ち砕かれました。

 

「Document」はWordVBAにおいては、Wordを構成する「文書」や「段落」などの要素を扱うためのオブジェクトとなっています。また、IE(InternetExplorer)で使われる時は、HTML文書を扱うためのプロパティとして使われます。

 

2と3で共通して使われている「Document.Body」の「Body」からもわかるように基本的にWebBrowserを通してIE(InternetExplorer)などのWeb画面を操作するために作られています。

 

インターネット上で調べた範囲でもWebBrowserを利用する方法のほとんどがIEに関する記述で、PDFを扱う情報は少数派です。

 

とはいうものの「WebBrowser1.Document.Body」というコードから、要は「WebBrowser」の内部情報、表示情報を操作するためのコードということだから、いろいろと試行錯誤していればいづれ上手くいく時が来るんじゃないかと思っていました。

 

しかしここまで書いた3つのコード(実際はもっとたくさんのコードを試しています。)では、どうしてもWebBrowserに表示されるPDFを操作できるようにはなりませんでした。

 

まぁ上手く噛み合わなかったということなんでしょうが、その後偶然にもWebBrowserコントロールをオブジェクト変数に格納して使うとPDFを操作できるようになるという方法に辿り着きます。

 

自分はVBA初心者なので具体的な内部構造まではわかりませんが、オブジェクト変数を利用することでコンピューターがそれまでとは違うオブジェクトとして認識するようになったということでしょうか。

 

とにかく詳細はわかりませんが、この方法で操作できるようになりました。

WebBrowserを通してPDFが操作できるというのは、かなり応用範囲が広がるのではないか

今回の記事と前回の以下の過去記事で思ったのは、PDFが表示されるWebBrowserコントロールをオブジェクト変数を通して使うとPDFの操作の応用範囲がかなり広がるんじゃないかと思いました。

実際にPDF関連のコードを全て試してみたわけではありませんが、いくつかは自分の意図通りに動作したコードもあったので、「お?これは!?」という感じでした。

 

ExcelVBAのフォームのWebBrowserコントロールを利用すると、開いたPDFを直接操作するコードよりも全然簡単なコードで操作できるので、今後はこの方法をいろいろと試していってみようかと思います。

あわせて読みたい

こんな記事も読まれています

コメント