TOP > AcroPDFLib.AxAcroPDF [...]
はじめに
Excel VBA環境で作ったフォームや、VB.NETのフォーム上等にPDFブラウザ(PDFファイルを表示)する機能を提供するオブジェクト(コントロール)です。
PDFファイルを当オブジェクト(コントロール)に表示したり、ページ移動や印刷などの機能を提供します。
Acrobat Readerの機能をブラウザ・オブジェクト(コントロール)で提供すると思って下さい。
※注意:当機能はAcrobatアプリ本体の AcroPDF.dll を使用して動作します。
つまりAcrobatアプリ本体が環境にインストールされてないと動作しません。
Excel VBAで使用する前提条件
- 「PDFブラウザ用の参照設定」を行う。
- Excelシートには使えず、Excel VBAのフォーム上で使用する。
(Excelシートは使えるが開発に困難な部分が有る)
Excel VBAでの使用上の注意
- Excel VBAのフォームは実行時はダイアログボックス的な表示になります。
よって通常の画面サイズ変更が出来ません。
画面サイズ変更を行いたい時は専用ボタンやロジックの追加等が必要になります。
メソッド |
解説
|
---|---|
GetVersions | 注)このメソッドはもう利用可能ではありません。(推奨しない) |
goBackwardStack | 1つ前のPDFページではなく、2つ前に表示したページが存在する時は、その2つ前のページに移動表示します。 2つ前に表示したページが存在しない時は、1つ前に表示したページに移動表示します。 WEBブラウザの「戻る」を1度に2回した動作と思えば判りやすいと思います。 |
goForwardStack | GoBackwardStackメソッドを実行して移動表示したページの1つ前に移動表示したページを表示します。GoBackwardStackメソッドを実行した時のみ動作します。 |
gotoFirstPage | AcroPDFオブジェクト(コントロール)に表示しているPDFページと現在のズームレベルのや現在の位置設定を維持したままで、PDFドキュメントにおける最初のページに移動表示します。 |
gotoLastPage | AcroPDFオブジェクト(コントロール)に表示しているPDFページと現在のズームレベルや現在の位置設定を維持したままで、PDFドキュメントにおける最終のページに移動表示します。 |
gotoNextPage | AcroPDFオブジェクト(コントロール)に表示しているPDFページと現在のズームレベルのや現在の位置設定を維持したままで、PDFドキュメントにおける次ページに移動表示します。 |
gotoPreviousPage | AcroPDFオブジェクト(コントロール)に表示しているPDFページと現在のズームレベルのや現在の位置設定を維持したままで、現在表示しているPDFドキュメントの1ページ前に移動表示します。 |
LoadFile | ブラウザの中に指定されたドキュメントを開いて、表示します。 |
オプションに従ったドキュメントがユーザダイアログボックスの中で選択され印刷されます。 | |
printAll | 印刷ダイアログボックスを表示しないで、PDFドキュメント全体を印刷します。 現在のプリンタ、ページの設定等がそのまま使用されます。 印刷が完成しなくても、このメソッドの次のコードを直ちに実行されます。 |
PrintAllFit | 全体がユーザーダイアログボックスを示すことなく文書化し、必要に応じてプリントは縮小されます。 印刷時にページの「イメージ-可能」領域に収まるように縮められます。 |
printPages | 印刷ダイアログボックスを表示しないで、PDFドキュメントをページ範囲指定して印刷します。 現在のプリンタ、ページの設定等がそのまま使用されます。 印刷が完成しなくても、このメソッドの次のコードを直ちに実行します。 |
PrintPagesFit | ユーザダイアログボックスを表示しないで、指定されたページを印刷します。 縮小指定が出来ます。 |
printWithDialog | 印刷ダイアログを表示します。 ページの選択状態があれば、範囲印刷設定が印刷ダイアログに設定されます。 |
SetCurrentHighlight | 指定された制限長方形の中でテキスト選択を現在のページに強調します。 |
SetCurrentPage | ドキュメントの指定されたページに移動します。 |
setLayoutMode | PDFドキュメント表示のページ・ビューにレイアウトモードを設定変更します。 |
SetNamedDest | ページ・ビューを指定された文字列の命名された目的先に変えます。 |
setPageMode | PDFドキュメントのページ表示モードを設定します。 |
SetShowScrollbars | スクロールバーがドキュメント視点に現れるか否かに関係なく、決定します。 |
setShowToolbar | PDFを表示しているAcroPDFオブジェクト(コントロール)にツールバーを表示するか、非表示にするかをセットする。 |
SetView | 指定された文字列に従って、1ページの視点を設定します。 |
SetViewRect | 指定された座標によると、視点長方形を設定します。 |
SetViewScroll | 指定された文字列に従って、1ページの視点を設定します。 |
setZoom | PDFドキュメントの表示倍率を設定します。 |
SetZoomScroll | 規定値に従って倍率を設定して、水平又は垂直にページ・ビューをスクロールします。 |
プロパティ |
解説
|
---|---|
src | PDFドキュメントのURLをセットするとAcroPDFオブジェクト(コントロール)にPDFを表示する。 またAcroPDFオブジェクト(コントロール)に表示されているPDFのURLを取得できる。 ※Adobe社のPDF英語版マニュアルにはそう書いているが、ローカルPDFのフルパスも同様に扱える。 |
備考
- 印刷に関しては「印刷の問題点を解決」も参照してください。
- Acrobar SDK 8.1 にはVB.NET等を使って当オブジェクトである AcroPDFコントロールを使用している例があります。
プロジェクト名「AcrobatActiveXVB」がそれです。
VB.NETの方はそれを参考にした方が判りやすいです。
- PDFブラウザ用の参照設定ではExcel VBA 開発環境でのフォームを利用してPDFファイル表示を行っていたが、Excel シートでもPDFブラウザ用の参照設定を行っておけばPDFファイル表示が可能になります。
しかし当サイト管理者はこの方法を推奨しかねるので詳細なやり方はココに明記しません。
※以下がその作成時のサンプル
- 一部のメソッドとプロパティを使ったExcel VBAサンプルを作りました。
- AcroPDFLib.AxAcroPDF:Excel VBAサンプル(A) v0.1.1
旧バージョン - AcroPDFLib.AxAcroPDF:Excel VBAサンプル(B) v 0.1.2
画面サイズの変更ボタンを追加 - 上記からこのExcelファイルのダウンロードも出来ます。
- AcroPDFLib.AxAcroPDF:Excel VBAサンプル(A) v0.1.1
注意事項
当オブジェクトにあるAcroPDFコントロールは以下の環境では異常終了を起こします。
Windows XP Pro(+SP3+WindowsUpdate) + Microsoft Excel 2000 (+SP3+OfficeUpdate) + Adobe Acrobat 9.1.2 [現象] AcroPDFコントロールをExcel 2000のVBA開発環境上でフォームに貼り付けます。
その後にAcroPDFコントロールに対してリサイズを行うとエラーメッセージも出さずにExcel 2000が終了する。
とにかくAcroPDFコントロールのsrcプロパティ以外を変更するとExcel 2000が異常終了する。
対応策の一つで一発でAcroPDFコントロールをフォームに張り付けても実行時に「~~~’IAcroAXDocShimオブジェクト’」というエラーメッセージが表示される。
更にその場合は2回目の実行時からは、またExcel 2000が異常終了を起こす。
- [原因]
現時点(2009/7/30)では不明。AcroPDFコントロールのバグと推測する。 - [備考]
- Excel 2002(=XP)、Excel 2003、Excel 2007上では上記異常終了は出ませんでした。
- 仮にAcroPDFコントロールを貼り付けれても、実行時に一部操作でも同様な異常終了するという報告を受けています。
- 管理人が出した結論です。
「AcroPDFコントロールをOffice 2000シリーズで使用すると一部のプロパティ操作でアプリケーションが異常終了する。」
なお、これに関する経緯はこのページのコメントにkkkさんから報告されています。
< TOPへ >
Perfect piece at work you have done, this excellent website is actually cool with great info .
管理人さん
こんばんは
サイトを色々探しこちらにたどり着きました。
皆さんと近いような近く無い様な悩みなんですが・・
PDFの印刷についてVB.NETで作成しています
普通にプリンター(ドライバ)の指定、枚数の指定をプログラムで行い
画面上はPDFは非表示の状態で印刷したいのですが
どうしてもPDFが開いてしまいうまくできませんでした
そしてこちらのサンプルを見させていただき.printAllにおいて
PDFは非表示で印刷されたのですが・・・・
なぜか一部のパソコンで印刷後に空のアクロバットリーダーが立ち上がってしまいました。
また、肝心なところで、プリンター(ドライバ)の指定、枚数の指定ができないことがわかりましてどうしたものかと・・・
お知恵拝借できないかと思い、ご相談させて頂いた次第です。
どうぞお願いいたします。
sadogashiman さん。はじめまして。
取り急ぎ返答させて頂きます。
無料で配布公開されているAcrobat SDKをダウンロードすると
AdobePDFSilentVB というVB.NETサンプル(VB2005)があります。
他にも色々とVB.NETサンプルがあるのでそれを参考にする事をまずはお勧めします。
※DLのURLは度々変更されるので検索して下さい。
>・・空のアクロバットリーダーが立ち上がって・・
(外れている可能性もありますが・・)
Acrobatの終了が完全でなく、それでOPEN等をするとメモリ上に残っているAcrobatプロセスが起動されて、空のAcrobatが起動されることがよくあります。
タスクマネージャーを起動して再現テストをすると状況が判ります。
以下を参考にして下さい。
Acrobatアプリケーションを閉じる(実は簡単に出来ない)
>プリンター(ドライバ)の指定、枚数の指定ができないことがわかりましてどうしたものかと・・・
当サイトで紹介しているメソッドではプリンタードライバーの指定が出来ません。
そこで以下の手を使ってプリンタードライバーを一時的に操作しています。
デフォルトプリンタを一時的に変更する方法
枚数の指定は事前に不要なページを削除してはダメでしょうか?
更新保存さえしなければ何も問題無いと思います。
すこしでも解決につながれば幸いです。
管理人さん
早速の連絡ありがとうございます。
サンプルの件見て見ます。
プロセスの件は何とかなるような気がしますので実験して見ます。
あと、枚数指定ですが
同じものを100枚とか出したいのです。
確かに時間がかかっても良いなら
100回印刷すればいいのですがそれだとスプールの処理上もったいないので
何かあるんじゃないかなぁと思ったんですが・・・
もう少し調べます。
ありがとうございました。
初めて送信します。VBA初心者です。
【環境】OS;Win7 Enterprise 32bit,IE;8.0.7601,Office2010,Acrobat X
【やりたいこと】
エクセルのA列にPDFファイルのみのURLが数千行あり、一つずつIEでPDFを開くところまではVBAでできましたが、IE上のPDFの「文書のプロパティ」の「概要」タブの「ファイル(名)」「タイトル」及び「作成者」のデータを変数に取り込みたいのですがどのようにしたらよいのか不明です。
お忙しいところ恐縮ですがご教授いただけますと助かります。
けんじ さん。はじめまして。
「ファイル(名)」はExcelのA列に有るPDFファイル名と同じになると思います。
VBのSplit関数で/で区切れば取得出来るはずです。
「タイトル」及び「作成者」に関しては以下のページにVBAサンプルとサンプルのExcelファイルがダウンロード出来るようにしてありますので、それを参考にしてください。
「Excel:PDFの文書プロパティを表示する」
http://pdf-file.nnn2.com/?p=8
Acrobat X+WinXP+Excel 2003 での動作確認は出来ています。
解決につながれば幸いです。
body
早速のご回答ありがとうございました。
「Excel:PDFの文書プロパティを表示する」
http://pdf-file.nnn2.com/?p=8
の
Const CON_NAME = "D:\iac_developer_guide.pdf"
の部分を
Const CON_NAME = strURL'←予めA列から取得したURLを変数(strURL)入れてあります
'
にしたいのですが、「コンパイルエラー 定数式が必要です」となってしまいます。
やり方が分かりません。
けんじ さんへ。
CONST の部分にマウスカーソールを載せて、F1キーをクリックすると、VBAのヘルプが表示されます。
それを参考にしてください。
それとPDFファイルのプロパティを取得するには、URLでは無理です。
実行エラーにはなりませんが、OPENではエラーステータス(0)が返ります。
プロパティの取得には該当するPDFのURLでは無く、パソコンのハードディスク上のフルパスにしなければ出来ません。
これはテストの結果です。
つまりURL上のPDFのプロパティを取得するには、一旦そのPDFをパソコン上にダウンロードする必要があります。
PDF等のダウンロード方法についてはネット検索で調べてください。
なお、当サイトはAcrobat PDFのOLE(IAC)を専門とした技術情報を提供しているサイトです。
VB、又はVBAの基本操作を支援するサイトではありません。
VB、又はVBAに関しては、専門書籍を見て頂くか、検索すると多数の専用サイト様が有りますので、その手の質問はそちらの方にお願いします。
管理人さん
はじめまして。
当方、.netのWebBrowserコントロールを使用してPDFの閲覧を行っています。ブラウザ上にPDFを表示した場合に、印刷や保存機能を無効にすることはできますでしょうか。
現在できている事は、ブラウザコントロールのプロパティからAVDocオブジェクトを取得し、setShowToolbarメソッドでツールバーを非表示にすることぐらいしかできていません。Appを取得できればもう少し色々できそうな気がするのですが。。。
シンジ さん。はじめまして。
まず、質問内容を整理させて下さい。
①ブラウザ上で「.netのWebBrowserコントロール」を使ってPDFを制御します。
これは当サイトが提供している技術情報(Acrobat OLE)とは技術的には全く異なります。WebBrowserコントロールはMS提供ツールです。
http://msdn.microsoft.com/ja-jp/library/w290k23d(v=vs.80).aspx
②WebBrowserコントロールに関してはサイト管理人は未経験です。
③質問内容にAVDocオブジェクトを使った、と有りますが。AVDocオブジェクトはクライアントにAcrobat Proアプリケーションがインストールされている前提条件が必要になります。よってご希望のWEBブラウザ上での処理は出来ないと思われます。
目的はブラウザでPDFを表示して、印刷と保存が出来ないようにする事と思われます。
この部分のみ注目して返答させて頂きます。
A)WEBブラウザ上から印刷を制御するには
http://social.msdn.microsoft.com/Forums/ja-JP/8e07a225-7d4b-44ab-80cc-3387b46eb435/webbrowserpdf
を参考にして下さい。このQ&Aはコチラのサイトにも質問が有りましたが、MSの方にお願いをした内容です。結果は未確認です。
B)保存に関してですが、当サイトの以下のサンプルを御覧ください。
ブラウザ表示するPDFを事前に処理して対処します。
PDFをWEBブラウザでしか表示出来ない様にする方法(this.path 使用)
PDFをWEBブラウザでしか表示出来ない様にする方法(this.URL 使用) ※運用上の注意点有り
ローカルへの保存は出来ますが、表示が出来ないので結果的には保存できないになります。
また該当PDFが変更できる状態で有る必要が有ります。
解決につながれば幸いです。
管理人さん
ご回答ありがとうございます。
質問の内容が不明確で申し訳ありませんでした。
目的はご指摘の通りの内容です。
教えて頂いたサイトを参考に頑張ってみます。
ありがとうございました。
シンジ さんへ。
簡潔に返答したつもりですが、この手の処理内容は大変難しいと思われます。
出来る範囲での制約は有りますが、ご支援は出来ます。
その時は遠慮無く、ご質問下さい。
※一番簡単にシステムを作るにはPDF内のJavaScriptで印刷、保存イベントに
対して、強制クローズ命令を入れれば簡単に印刷と保存を阻止出来ます。
しかし、当サイト技術ではイベント単位のAcrobat JavaScriptを埋め込むことは
現時点では見つかってません。
とても参考になりました。
app.execMenuItem("ShowHideThumbnails");
についてですが、引数のShowHideThumbnailsのネーミング通り、
showとhideがトグルになっています。
これをhideになっている場合のみshowメソッドが実行されるようにしたいのですが、現在サムネイルが表示されているかをチェックするAcrobat JavaScript(ex. if(app.thumbnails.display){}のようなもの。)か、もっと良いのは、ナビゲーションパネルに表示されているのがサムネイルなのか「しおり」なのか、それとも添付ファイルパネル、レイヤーパネル・検索パネルなのかなどを知るAcrobat JavaScriptとかご存じないでしょうか?
ssさん
初めまして
execMenuItemメソッドに使える引数の情報は以下を参考にしてます。
Acrobat:Menu and Toolbar Button Names 一覧
>・・現在サムネイルが表示されているかをチェックする・・・Acrobat JavaScriptとかご存じないでしょうか?
難しい質問ですね。
OLEならばMenuItemIsEnabledメソッドを使えば、そのメニューが使えるかで判断できそうな気はしますが。※動作未確認
JavaScriptに関しては、初心者レベルの知識なので、以下のマニュアルを見るしか手が有りません。
JavaScript for Acrobat API Reference
Adobe Acrobat SDK バージョン 8.0
(765頁) Acrobat JavaScript の詳細な解説書/リファレンス
ナビゲーション等のキーワードで検索してみましたが、該当するモノは無かったです。
ひとつひとつマニュアルのプロパティ、メソッドを見るか、別の観点(技術)を考えるしか手がないかもしれません。
取り急ぎ、返答させていただきます。
管理人さん、ありがとうございます。やはり難しそうですね。
これまで、このサイトの資料を大変有効に活用させていただいており、お礼を申し上げます!
そのさい、これまではインターネットエクスプローラにて参照させていただいており、半年程度前までは正常に見ることが出来ておりましたが、最近はエラーが出て参照が出来なくなりました!
当方の環境は、Win-XP IE8となっております!
ただし、同じ環境下でGoogle Chromeでは、正常に参照が出来ております!
ほかのサイト画面はすべて正常で、本サイトのみで問題が起きているため、その原因と対策が分かりましたら、お教え願えませんでしょうか・・・?
Ochan さん
はじめまして
IE、Firefox、Chrome、Opera、での最新バージョンでの動作は一部確認していますが
全てのバージョンでの動作確認は現実問題として不可能です。
お手数ですがお手元での閲覧可能なブラウザをお使いください。
>・・本サイトのみで問題が起きているため・・
ご忠告ありがとうございます。
その手の技術情報のスキルは無いので、今後の参考にさせて頂きます。