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) :
    開く時のタイトル。指定無し””でも構わない。

 

動作するバージョン

Version Adobe
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
8
OK
Acrobat 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キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。

 

Sub AcroExch_AVDoc_Open()
    Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
    Dim lRet            As Long

    'PDFファイルを開く。
    On Error Resume Next
    lRet = objAcroAVDoc.Open(“E:¥Test01.pdf”, "")
    If lRet = False Then
        'Acrobatがエラーメッセージを表示する
        MsgBox "AVDOC.Open Error " & lRet
        'PDFファイルを保存せずに全て閉じます。
        lRet = objAcroAVDoc.Close(1)
        GoTo Skip_CommandButton01_Click
    End If
    
    'ここで各種PDFの処理を行う。

    'PDFファイルを保存して閉じます。
    lRet = objAcroAVDoc.Close(0)

Skip_CommandButton01_Click:

    'PDFオブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
End Sub

 

補足

  • 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関数で先にエラーになります。

Private Sub CommandButton01A_Click()
    Dim objAcroApp      As New Acrobat.AcroApp
    Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
    Dim lRet            As Long
    Const CON_FILENAME  As String = "E:¥Test01_excel.pdf"
    
    'PDFファイルの属性チェック
    If Dir(CON_FILENAME, vbNormal) = "" Then
        MsgBox CON_FILENAME & _
        " ファイルは存在しないか、PDFではありません。", _
        vbOKOnly + vbExclamation, "エラー"
        GoTo Skip_CommandButton01_Click
    End If
    
    'Acrobatアプリケーションを起動する。
    lRet = objAcroApp.Show
    'PDFファイルを開いて表示する。
    lRet = objAcroAVDoc.Open(CON_FILENAME, "")
    If objAcroAVDoc.IsValid = 0 Then
        MsgBox CON_FILENAME & _
        " ファイルはPDFではありません。", _
        vbOKOnly + vbExclamation, "エラー"
        GoTo Skip_CommandButton01_Click
    End If

    'PDFファイルを全て閉じます。
    lRet = objAcroApp.CloseAllDocs

    'Acrobatアプリケーションを終了する。
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit

Skip_CommandButton01_Click:

    'PDFオブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing
End Sub

 

備考

 

注意 ②

★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 メソッド」への4件のフィードバック

  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

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

コメントを残す

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

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin