AcroExch.AVDoc: Open メソッド

TOP > AcroExch.AVDoc > Open      [...]


説明

PDFドキュメント(オブジェクト)、又はAcrobatがサポートしている画像ファイル(jpeg,png等)を開きます。

Acrobatアプリケーションが起動されていれば指定したファイルは画面表示されます。(<-注意事項有り)

Acrobatアプリケーションが起動されて無い時はインスタンス(オブジェクト)のみ作成します。

形式

VARIANT_BOOL Open(BSTR szFullPath,
                                BSTR szTempTitle);

戻り値

  • 戻り値が-1の時は成功。
  • 戻り値が0の時は失敗。

引数

  1. 第一引数(BSTR szFullPath) :
    PDFファイルのフルパス。
    Acrobatがサポートしている画像ファイル(jpeg,png等)のフルパス。
  2. 第二引数(BSTR szTempTitle) :
    開く時のタイトル。指定無し””でも構わない。

動作するバージョン

VersionAdobe
Acrobat
備考
4-Acrobat 4.0    ※Windows 98SE + Excel 2000
5
-
Acrobat 5.0.5
6
OK
Acrobat 6.0.3 Pro
7-Acrobat 7.0.9 Pro
Acrobat 7.1.4 Pro
8OKAcrobat 8.1.2 Pro
9-Acrobat 9.3.2 Extended
10-Acrobat X (10.1.8) Extended
11-Acrobat XI (11.0.04) Extended
  • OK = 動作する。
  • NO = 動作しない。 戻り値が0を返す。
  • - = 未確認。

サンプル:ExcelのVBA

説明:PDFファイルを画面表示せず、インスタンスのみ作成して閉じる。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
001 Sub AcroExch_AVDoc_Open() 002 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 003 Dim lRet As Long 004 005 'PDFファイルを開く。 006 On Error Resume Next 007 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "") 008 If lRet = False Then 009 'Acrobatがエラーメッセージを表示する 010 MsgBox "AVDOC.Open Error " & lRet 011 'PDFファイルを保存せずに全て閉じます。 012 lRet = objAcroAVDoc.Close(1) 013 GoTo Skip_CommandButton01_Click 014 End If 015 016 'ここで各種PDFの処理を行う。 017 018 'PDFファイルを保存して閉じます。 019 lRet = objAcroAVDoc.Close(0) 020 021 Skip_CommandButton01_Click: 022 023 'PDFオブジェクトを強制解放する 024 Set objAcroAVDoc = Nothing 025 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

補足

  • OpenしたPDFドキュメント、又はAcrobatがサポートしている画像ファイル(jpeg,png等)は必ずCloseAllDocsメソッドかCloseメソッドで閉じる必要がある。その処理をしないとAcrobatアプリケーションを再起動した時に、そのファイルが指定をしないのに再表示される。
    注)何らかに形でインスタンス情報がメモリ上に残る為です。
  • Openしたファイルを画面表示せずに処理することが可能です。これがこのOpenメソッドの最大の特徴です。
  • PDFファイルに開くときのパスワードが設定されていると、このOpenメソッドで一時的に停止して画面上にパスワード入力を要求するダイアログ画面が表示されてしまいます。
    PDFを開く時にパスワードが設定されている時に表示されるダイアログ

    これを回避するには以下のメソッドを事前に実行してください。
    AcroExch.PDDoc:Open メソッド
    上記メソッドでFalse(0)が返ってきた時は「PDFを開くときのパスワード付き」ファイルと判断できます。

注意 ①

  • 存在しないFファイルを指定すると処理を中断し、Acrobatアプリケーションから以下のエラーメッセージ・ダイアログが表示されます。
    ※「この文書を開くときにエラーが発生しました。このファイルが見つかりません。」
    「この文書を開くときにエラーが発生しました。このファイルが見つかりません。」
  • 事前にPDFファイル、又はAcrobatがサポートしている画像ファイル(jpeg,png等)をチェックするロジックを当Openメソッドの前に入れる方が最良の方法だと思います。
    下記のサンプルはExcelファイルの拡張子をPDFにしたものです。Dir関数で先にエラーになります。
001 Private Sub CommandButton01A_Click() 002 Dim objAcroApp As New Acrobat.AcroApp 003 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 004 Dim lRet As Long 005 Const CON_FILENAME As String = "E:\Test01_excel.pdf" 006 007 'PDFファイルの属性チェック 008 If Dir(CON_FILENAME, vbNormal) = "" Then 009 MsgBox CON_FILENAME & _ 010 " ファイルは存在しないか、PDFではありません。", _ 011 vbOKOnly + vbExclamation, "エラー" 012 GoTo Skip_CommandButton01_Click 013 End If 014 015 'Acrobatアプリケーションを起動する。 016 lRet = objAcroApp.Show 017 'PDFファイルを開いて表示する。 018 lRet = objAcroAVDoc.Open(CON_FILENAME, "") 019 If objAcroAVDoc.IsValid = 0 Then 020 MsgBox CON_FILENAME & _ 021 " ファイルはPDFではありません。", _ 022 vbOKOnly + vbExclamation, "エラー" 023 GoTo Skip_CommandButton01_Click 024 End If 025 026 'PDFファイルを全て閉じます。 027 lRet = objAcroApp.CloseAllDocs 028 029 'Acrobatアプリケーションを終了する。 030 lRet = objAcroApp.Hide 031 lRet = objAcroApp.Exit 032 033 Skip_CommandButton01_Click: 034 035 'PDFオブジェクトを強制解放する 036 Set objAcroAVDoc = Nothing 037 Set objAcroApp = Nothing 038 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

備考

注意 ②

★2009/01/07 追加

  • Acrobat v8.1.3、v9.0の場合、オブジェクトは生成され、戻り値もTrue(-1)だが、ファイルが画面表示されない現象が発生しています。
    原因不明です。
    Windows環境やExcelバージョンを変えても結果は同じ。なぜPDFドキュメント、又はAcrobatがサポートしている画像ファイル(jpeg,png等)が画面に表示されないかは、分からないです。
    Acrobat v7.0ではPDFがAcrobat上に画面表示される。

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 6.0.3 Pro + Office 2003 + MicrosoftUpdate
  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate

戻る


キーボード

ブラウザ画面の文字サイズを変更するショートカットキー

  1. [ CTRL ] + [ + ]  :  文字を大きく

  2. [ CTRL ] + [ - ]  :  文字を小さく
Shortcut Keys

  1. [ CTRL ] + [ + ]  :  Up the font size

  2. [ CTRL ] + [ - ]  :  Down the font size

「AcroExch.AVDoc: Open メソッド」への7件のフィードバック

  1. 管理人様
    初めて送信します。

    いろいろなサイトを見てきました。
    VB.NETでAVDoc.Openを上記のように実行していますが、
    パスワードつきPDFの場合、Open()メソッドで停止してしまいます。
    パスワードつきPDFの場合、エラーとできればよいのですが
    Open前にパスワードつきかどうか判断する方法を
    教えていただけないでしょうか?

  2. きんじ さん。
    初めまして。

    > パスワードつきPDFの場合、・・・

    ここで言っているパスワードとは「文書を開くときのパスワード」の事ですね。

    > ・・・Open()メソッドで停止してしまいます。

    停止と言うよりはパスワード入力を要求されるダイアログが表示されるので一時停止する、と思っています。

    > Open前にパスワードつきかどうか判断する方法を・・・

    当サイトで記載している情報ではPDFを開く時にパスワード付きPDFかの判断が出来る特定の命令は見当たりません。
    しかし、以下の命令を使うとOpen時にエラーが帰る事がテストで確認できました。
    AcroExch.PDDoc:Open メソッド

    ・Adobe Acrobat 8 Professional
    ・Windows 7 64Bit
    上記環境でテストした結果です。

    少しでも解決につながれば幸いです。

  3. 管理人様

    回答ありがとうございます。

    PDDoc:Openメソッドによって回答通り、パスワードつきPDFをエラーとして対応できることが分かりました。

    確認環境は下記の通りです。
    ・Adobe Acobat XI Professional
    ・Windows 7 32bit

    解決できて、助かりました。本当にありがとうございました。

  4. 以前(かなり前)に質問させていただいた者です。
    また、教えてください。

    lRet = objAcroAVDoc.Open
    lRet = objAcroPDDoc.Open

    この2つの使い分けは、どのように考えればよいのですか?
    現在はプリントやトリミングの際に使用しており、なんとなくobjAcroAVDocであけています。

  5. なかはら さんへ。

    Acrobat OLEを使うときはメモリ上でAdobe Acrobat本体が実行されます。
     Dim objAcroApp As New Acrobat.AcroApp
     objAcroApp.Show
    でデスクトップ上にそのAdobe Acrobat本体も表示することができます。
    ※以下、バージョン番号は正確で無いです。

    ▼PDFのオープンの仕方の違い:

    objAcroAVDoc.Open を実行するとAdobe Acrobat本体にオープンしたPDFが表示されます。その分、CPUを使うので処理速度が落ちます。
    objAcroPDDoc.Open はオープンしてもPDFは表示しません。よって処理が早いです。PDFの処理件数が多ければ、その差は歴然です。

    ただし、これはAcrobat v7,8、9 ぐらいまでの古いバージョンでの仕様だったと思います。
    Acrobat X(v10)?ぐらいから、objAcroAVDoc.Open でも表示されなくなりました。理由は調査していません。
    よって、新しいバージョンのAcrobatの場合はCPUの処理時間を気にする必要は無くなった、のかもしれません。
    正確に計測はしてないので、これも不明です。

    ただAcrobatのUpdateによって、なんらかの拍子に以前の仕様?通りに表示されるようになるかもしれません。

    ▼結果:

    >・・なんとなくobjAcroAVDocであけています。

    もし客先への納品物ならば、できれば、objAcroPDDoc.Openの方が良いです。後日、PDFが画面に表示されたら困ります。
    ただ無理してPDDocを使って、オブジェクト連携が発生し、処理時間が増えるのも考えてしまいます。
    処理速度、メンテナンス性、稼働環境(客先)、等を考慮して、使い分けてください。

    社内、個人で使うのなら、どちらでもOKです。

  6. ご返答ありがとうございます。
    しばらくは両方を使い比較してみます。
    OLEに関するわかりやすいサイトがないものですから、とても助かっています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください