AcroPDFLib.AxAcroPDF: Excel VBAサンプル(A)

TOP > AcroPDFLib.AxAcroPDF > Excel VBAサンプル(A)


AcroPDFLib.AxAcroPDFオブジェクトの一部を使ったExcel VBAサンプルです。

Acrobat Readerと同じ動作をします。

当ページ最下部の注意も参照してください。

 

Excelファイルのダウンロード

AxAcroPDF005.zip

 

動作確認環境

  • WindowsXP Pro + SP3 + フルWindowsUpdate + Acrobat Pro 8.1.2
    ※Acrobat Readerのみの環境では動作しません。 

 

サンプル実行画面

サンプル(A)画像

 






Excel VBA ソースコード

※一部が2行にまたがって表示されています。

Option Explicit

Private Sub UserForm_Initialize()
    '画面初期サイズを変更する
    Me.Width = 750
    Me.Height = 550
    AcroPDF1.Width = Me.Width - 10
    AcroPDF1.Height = Me.Height - AcroPDF1.Top - 40
    
    'Tipsをセットする
    cmdOpenPDFFile.ControlTipText = _
        "ローカルなPDFファイルを選択&表示する"
    cmdReadPDF.ControlTipText = _
        "URL.PDFなどのPDFファイルを表示する"
    chbDisplayToolBar.ControlTipText = _
        "ToolBarを表示する"
        
    cmdPrintWithDialog.ControlTipText = _
        "PrintWithDialogメソッドを実行"
    cmdPrintAll.ControlTipText = _
        "PrintAllメソッドを実行"
    cmdPrintPages.ControlTipText = _
        "PrintPagesメソッドを実行"
    txtFromPage.ControlTipText = _
        "印刷開始ページをセット"
    txtToPage.ControlTipText = _
        "印刷終了ページをセット"
        
    cmdGoBackwardStack.ControlTipText = _
        "GoBackwardStackメソッドの実行"
    cmdGoFirstPage.ControlTipText = _
        "GoFirstPageメソッドの実行"
    cmdGoPreviousPage.ControlTipText = _
        "GoPreviousPageメソッドの実行"
    txtPageNumber.ControlTipText = _
        "PageNumberメソッドの実行"
    cmdGoNextPage.ControlTipText = _
        "GoNextPageメソッドの実行"
    cmdGoLastPage.ControlTipText = _
        "GoLastPageメソッドの実行"
    cmdGoForwardStack.ControlTipText = _
        "GoForwardStackメソッドの実行"
        
    cmbsetPageMode.ControlTipText = _
        "setPageModeメソッドを実行"
    cmbsetLayoutMode.ControlTipText = _
        "setLayoutModeメソッドを実行"
    cmdsetZoom.ControlTipText = _
        "setZoomメソッドを実行"
    cmbsetPageMode2.ControlTipText = _
        "setPageModeメソッドを実行"
    cmbsetLayoutMode2.ControlTipText = _
        "setLayoutModeメソッドを実行"
    txtsetZoom2.ControlTipText = _
        "ズーム%をセット"
    cmdsetZoom2.ControlTipText = _
        "setZoomメソッドを実行"
    
    AcroPDF1.ControlTipText = _
        "PDFファイルをココに表示する"
    cmdEnd.ControlTipText = "画面を閉じる"
    
    'コントロールの初期値を設定する
    AcroPDF1.setShowToolbar False
    With cmbsetPageMode2
        .Clear
        .AddItem "None"
        .AddItem "Bookmarks"
        .AddItem "Thumbs"
    End With
    With cmbsetLayoutMode2
        .Clear
        .AddItem "Don't Care"
        .AddItem "Single Page"
        .AddItem "One Column"
        .AddItem "Two Column Left"
        .AddItem "Two Column Right"
    End With
    txtsetZoom2.Text = 60  'ズ-ム 100%
    'PDFコントロール上のツールバーを設定(非表示)にする
    chbDisplayToolBar.Value = False
End Sub

Private Sub cmdOpenPDFFile_Click()
    Dim vntFileName     As Variant
    'ファイルを開くダイアログを開きます
    vntFileName = _
        Application.GetOpenFileName( _
            FileFilter:="PDFファイル(*.PDF),*.PDF", _
            FilterIndex:=1, _
            Title:="PDFファイルを開く", _
            MultiSelect:=False)
    '選択されたファイルを開きます
    If vntFileName <> False Then
       txtURL.Text = vntFileName
       Call cmdReadPDF_Click
    End If
End Sub

Private Sub cmdReadPDF_Click()
On Error GoTo Err_cmdReadPDF_Click
    '入力チェック
    If Trim(txtURL.Text) = "" Then Exit Sub
    'PDFを表示する
    AcroPDF1.src = txtURL.Text
    'PDFコントロール上のツールバーを設定(非表示)にする
    AcroPDF1.setShowToolbar chbDisplayToolBar.Value
    Exit Sub
Err_cmdReadPDF_Click:
    MsgBox Err.Number & " : " & vbCrLf & Err.Description, _
        vbOKOnly + vbCritical, _
        "実行エラー : cmdReadPDF_Click"
End Sub

Private Sub chbDisplayToolBar_Click()
    'PDFコントロール上のツールバーを設定(表示/非表示)にする
    AcroPDF1.setShowToolbar chbDisplayToolBar.Value
End Sub

Private Sub cmdGoBackwardStack_Click()
    '2つ目のビュースタックがあれば2つ前のページ表示をし、
    'なければ1つ目の表示したページを移動表示します。
    AcroPDF1.goBackwardStack
End Sub

Private Sub cmdGoFirstPage_Click()
    '最初のページに移動表示する。
    AcroPDF1.gotoFirstPage
End Sub

Private Sub cmdGoPreviousPage_Click()
    '1ページ前に移動表示する。
    AcroPDF1.gotoPreviousPage
End Sub

Private Sub txtPageNumber_Change()
On Error GoTo Err_txtPageNumber_Change
    If Trim$(txtPageNumber.Text) = "" Then Exit Sub
    If Not IsNumeric(txtPageNumber.Text) Then
        MsgBox "数字のみ入力です", vbOKOnly + _
            vbExclamation, "入力エラー"
        subSetFocusSelect txtPageNumber
        Exit Sub
    End If
    AcroPDF1.setCurrentPage txtPageNumber.Text
    Exit Sub
Err_txtPageNumber_Change:
    MsgBox Err.Number & " : " & vbCrLf & Err.Description, _
        vbOKOnly + vbCritical, _
        "実行エラー : txtPageNumber_Change"
End Sub

Private Sub cmdGoNextPage_Click()
    '次ページへ移動表示する。
    AcroPDF1.gotoNextPage
End Sub

Private Sub cmdGoLastPage_Click()
    '最終ページに移動表示する。
    AcroPDF1.gotoLastPage
End Sub

Private Sub cmdGoForwardStack_Click()
    'GoBackwardStackメソッドを実行して移動表示した
    'ページの1つ前に移動表示したページを表示します。
    'GoBackwardStackメソッドを実行した時のみ動作します。
    AcroPDF1.goForwardStack
End Sub

Private Sub cmdPrintWithDialog_Click()
    '印刷ダイアログを表示します。ページの選択状態があれば、
    '範囲印刷設定が印刷ダイアログに設定されます。
    '注)PDFドキュメントのセキュリティ設定で印刷不可の場合は
    ' 当メソッドは無視されます。
    AcroPDF1.printWithDialog
End Sub

Private Sub cmdPrintAll_Click()
    '印刷ダイアログボックスを表示しないで、
    'PDFドキュメント全体を印刷します。
    AcroPDF1.printAll
End Sub

Private Sub cmdPrintPages_Click()
On Error GoTo Err_cmdPrintPages_Click
    '入力チェック
    If Not IsNumeric(txtFromPage.Text) Then
        MsgBox "数字のみ入力です", vbOKOnly + _
            vbExclamation, "入力エラー"
        subSetFocusSelect txtFromPage
        Exit Sub
    End If
    If Not IsNumeric(txtToPage.Text) Then
        MsgBox "数字のみ入力です", vbOKOnly + _
            vbExclamation, "入力エラー"
        subSetFocusSelect txtToPage
        Exit Sub
    End If
    If Not (txtFromPage.Text <= txtToPage.Text) Then
        MsgBox "印刷範囲の入力ミスです", vbOKOnly + _
            vbExclamation, "入力エラー"
        subSetFocusSelect txtFromPage
        Exit Sub
    End If
    '範囲指定で印刷をする。開始ページは0からです。
    AcroPDF1.printPages _
        (txtFromPage.Text - 1), (txtToPage.Text - 1)
    Exit Sub
Err_cmdPrintPages_Click:
    MsgBox Err.Number & " : " & vbCrLf & Err.Description, _
        vbOKOnly + vbCritical, _
        "実行エラー : cmdPrintPages_Click"
End Sub

Private Sub cmbsetPageMode2_Change()
    'PDFドキュメントのページ表示モードを設定。
    '※小文字化してセットする
    AcroPDF1.setPageMode _
        StrConv(cmbsetPageMode2.Value, vbLowerCase)
End Sub

Private Sub cmbsetLayoutMode2_Change()
    Dim strlayout As String
    Select Case cmbsetLayoutMode2
    Case "Single Page"
        strlayout = "singlepage"
    Case "One Column"
        strlayout = "onecolumn"
    Case "Two Column Left"
        strlayout = "twocolumnleft"
    Case "Two Column Right"
        strlayout = "twocolumnright"
    Case Else
        strlayout = "dontcare"
    End Select
    'PDFドキュメント表示のページ・ビューに
    'レイアウトモードを設定変更する
    AcroPDF1.setLayoutMode strlayout
End Sub

Private Sub cmdsetZoom2_Click()
    '入力チェック
    If Not IsNumeric(txtsetZoom2.Text) Then
        MsgBox "数字のみ入力です", vbOKOnly + _
            vbExclamation, "入力エラー"
        subSetFocusSelect txtsetZoom2
        Exit Sub
    End If
    'PDFドキュメントの表示倍率を設定
    AcroPDF1.setZoom (txtsetZoom2.Text)
End Sub

Private Sub cmdEnd_Click()
    '画面を閉じる
    Unload Me
End Sub

Private Sub subSetFocusSelect(obj As Control)
    '入力ミスしたコントロールにフォーカスを
    '移動して、文字列を選択状態にする。
    With obj
        .SetFocus
        .SelStart = 0
        .SelLength = Len(obj.Text)
    End With
End Sub

  

  

注意

  • 当機能はAcrobatアプリ本体の AcroPDF.dll を使用して動作します。
    つまりAcrobatアプリ本体が環境にインストールされてないと動作しません。

 

< 戻る >

「AcroPDFLib.AxAcroPDF: Excel VBAサンプル(A)」への27件のフィードバック

  1. 管理人へ
    すみません。HTMLで頑張って、フォームイメージ図を作ったが、ダメでした。

  2. 呉 さんへ。

    ① 残念ですが見ないと分からないです。
    画像等はOneDriveやDropboxなどのネットワークドライブのファイル公開機能を使えば相手に見せることができます。

    当サイトで紹介している機能はAcrobat本体の1~2%程度の機能しか持っていません。つまり出来る部分が非常に少ない。よって出来ない部分は発想を変えて対処するしか手がないかもしれません。

    ② ハイライトに関してはかなり前から質問を受けてますが、今だに解決してない部分です。前のコメントで書いた
    http://pdf-file.nnn2.com/?p=203&cpage=1#comment-930
    にヒントが有ると思っていますが、未検証です。
    SendKeyは失敗が多く、危険な結果を生みますからオススメできません。

    諸事情で1~2週間はパソコンを開けてもコメントを返せないほど多忙になります。
    ご容赦ください。

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン