ExcelVBAのWebBrowserとsetZoomでPDFを拡大縮小させる方法

フォーム上のWebBrowserを通して表示させたPDFをどうやって操作するか

この部分まで辿りついた時は、全くもって甘く考えていました。なぜなら「後は、インターネット上にあるコードをコピペして多少いじればできるだろう」と考えていたからです。

 

インターネット上の情報は膨大です。ExcelVBA関連の情報については、ちょっと調べれば山のように詳しい情報が出てきます。

 

また、ExcelVBAというものがMicrosoft Officeに搭載されて広く使われるようになって(Wikipediaによると「1994年、マイクロソフトはExcel 5.0とともにVBAをリリースした。」とある)から20年以上経っているんだから「VBA関連の情報はほとんど網羅されているはずだ」と高を括っていました。

 

ですから「VBA関連についての情報はすぐに見つかるだろう」と思っていたのですが、現実は全く違ってました。以下の過去記事にも書いたのですが、自分の欲しい情報がどうしても見つからなかったんです。

最初の内は「自分の探し方が悪いんだろう」とか「自分が見落としてしまっているんだろう」と思っていました。けれども自分の欲しい情報、今回でいうところの「フォーム上でPDFを拡大縮小させるコード」がどうしても見つかりません。

 

なかなか欲しい情報が見つからないことに業を煮やし、自分もコード上で試行錯誤を始めました。

 

最初の内はインターネット上の他の人のサイトにあるコードを参考に、自分のパソコンでいろいろといじってみたのですが、そもそもPDFのオブジェクトモデルを理解してないのだからそんな簡単に上手くいくはずがありません。

 

「参照設定がちゃんとできていないからではないか」と思って、VBEの「ツール」→「参照設定」から表示される「参照可能なライブラリファイル」ダイアログボックスからPDF関連の項目にチェックを入れて試してみても上手く動作しませんでした。

 

「何が足りないんだろう」と考えながら、とにかくコードをいじっていたのですが、ある時のことです。既に引用しましたが次のコードを入れてデバッグで1行ずつ進めていた時のことです。

Set P = WebBrowser1.Document

 

「VBAから直接WebBrowserを通してPDFは操作できないのか?じゃあオブジェクト変数に入れる方法は?」などと考えながらとにかく手を動かして試行錯誤しながら偶然作ったのが上記のコードです。

 

VBAでF8キーを押しながら1行ずつデバッグしていると黄色のラインが上から下に順番に進んでいくのですが、エラーがあるとそれに対応したメッセージが表示されてしまいます。

 

しかし、この時は何も問題が起きずに黄色のラインが上記の引用したコードを通り過ぎました。

 

「えっっっっっっっっっ!?」

 

この時は本当にびっくりしました。「えっ?それ通るの?」と思わずにはいられませんでした。詳しい内部構造はわかりません。とにかくWebBrowserコントロールがオブジェクト変数Pに格納されたわけです。

 

以下に今回引用したコードを再掲します。

Private Sub ScrollBar1_Change()
Dim P As Object
Set P = WebBrowser1.Document
P.setZoom (ScrollBar1.Value)
End Sub

最初からスクロールバーコントロールを使っていたわけではありませんが、とにかく上記のコードからフォーム上でPDFを表示しながら操作が可能となり、「拡大縮小」ができるようになったわけです。

 

最初の内はこんな簡単なコードでいいのか信じられませんでした。なぜならインターネット上で調べた他のPDF関連のコードはほとんどPDF専用のコードを使っていて難解で、なおかつ行数もかなりあったからです。

 

でもとにかくこれで自分の思ったとおりに動作をしたので、「あぁこういったやり方、こういったコードもあるんだなぁ」と勉強になりました。

まとめ

今回の件で思ったのは、過去記事にもいくつか書いたのですが、「インターネット上には意外にも自分の欲しいコードが見つからない」ということです。

 

VBAは歴史もあるし、Excelを通して使ってきた人も多いはず、だから「VBA関連の情報はほぼ網羅されているに違いない」と以前は思っていました。しかし今回の件から、「全ての情報が探し出されたわけではなく自分で試行錯誤しなければいけないこともある」ということを学びました。

 

なんというか、自分が探していた情報の領域はあまり他の人が手をつけてこなかったのかもしれませんし、需要がなかったのかもしれません。世の中にはまだまだ自分の思いも寄らない世界、気づいていない世界があるのかもしれないなと思った出来事でした。

あわせて読みたい

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

コメント