VBAでフォームにPDF表示
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2023/1/9 16:18:43
VBA 界隈に関しては現状、あまり有効な手が無いんですよね。
PDF 表示用の有償 ocx ならあるようなのですが。
UserForm に埋め込むのではなく、既定のアプリで開くだけなら簡単なのですけれど…。
https://www.youtube.com/watch?v=qlNxcgFU6Io
Adobe Reader のコンポーネントを貼る方法も、環境によっては使えないケースが多く、
信頼性に欠ける状況ですし。
https://tsware.jp/tips/tips_618.htm
WebBrowser 経由で表示させるにしても、埋め込みになるかダウンロードになるかは
環境依存なので難しく。かといって、 Chromium 系のブラウザーで UserForm に
貼れるものは見当たらないですね。
WinRT の API については、そもそも VBA 向けに設計されたものでないですし、
同 API には非同期実装な物が多いのがネックです。VBA の場合、別スレッドを用意することは
非常に難しいので、仮に呼び出せたとしても、直接扱うのは難しいと思います。
.pdf から .png に変換する DLL あるいは EXE を C# や VB.NET で作成し、
それを呼び出すとかであれば可能でしょうけれども…。
PDF 表示用の有償 ocx ならあるようなのですが。
UserForm に埋め込むのではなく、既定のアプリで開くだけなら簡単なのですけれど…。
https://www.youtube.com/watch?v=qlNxcgFU6Io
Adobe Reader のコンポーネントを貼る方法も、環境によっては使えないケースが多く、
信頼性に欠ける状況ですし。
https://tsware.jp/tips/tips_618.htm
With Me!AcroPDF0.Object
.LoadFile pdfFilePath
.setLayoutMode "OneColumn"
.setPageMode "none"
.setView "FitH"
End With
WebBrowser 経由で表示させるにしても、埋め込みになるかダウンロードになるかは
環境依存なので難しく。かといって、 Chromium 系のブラウザーで UserForm に
貼れるものは見当たらないですね。
WinRT の API については、そもそも VBA 向けに設計されたものでないですし、
同 API には非同期実装な物が多いのがネックです。VBA の場合、別スレッドを用意することは
非常に難しいので、仮に呼び出せたとしても、直接扱うのは難しいと思います。
.pdf から .png に変換する DLL あるいは EXE を C# や VB.NET で作成し、
それを呼び出すとかであれば可能でしょうけれども…。
投稿者 snowmansnow  (社会人)
投稿日時
2023/1/9 20:02:16
こんばんは、魔界の仮面弁士様、いつもありがとうございます。
>UserForm に埋め込むのではなく、既定のアプリで開くだけなら簡単なのですけれど…。
>https://www.youtube.com/watch?v=qlNxcgFU6Io
①リーダーで表示なら、とても便利だと思いました。
>Adobe Reader のコンポーネントを貼る方法も、環境によっては使えないケースが多く、
>信頼性に欠ける状況ですし。
>https://tsware.jp/tips/tips_618.htm
②これは、私の環境では、コンポーネントを追加できませんでした。
>WinRT の API については、そもそも VBA 向けに設計されたものでないですし、
>同 API には非同期実装な物が多いのがネックです。VBA の場合、別スレッドを用意することは
>非常に難しいので、仮に呼び出せたとしても、直接扱うのは難しいと思います。
魔界の仮面弁士様が難しいものは、とても難しいと思います。
紙をスキャンしたPDFにアノテーションやフィールドを追加するときに、
マウスで四角とかをドラッグして描画して、目安にしたり、
それが全ページで位置が正しいかどうかを確認できるようにしたかったです。
(スキャンだと、紙によって、位置がズレるので)
最近のリーダーは、アノテーションを追加できたりするので、①は、とても便利でした。
残念ですが、VBAはあきらめて、VB.NETかC#で、やってみようと思います。
また、わからない所が出ましたら、宜しくお願いいたします。
こんにちは、
2021/08/03のKAZU様と魔界の仮面弁士様とのやりとりを拝見して、
VB.NETでフォームにPDF表示できるようになった(下記)のですが、
VBAでもフォームにPDF表示は可能でしょうか?
VB.NETで、フォームアプリケーションで、ボタン1個、picturebox1個追加しています。
よろしくお願いします。