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

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


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

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

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

 

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

AxAcroPDF006.zip

 

動作確認環境

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

 

サンプル実行画面

サンプル(B)画像

「画面のサイズ変更」フォーム

 






Excel VBA ソースコード

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

 

<frmPDFBrauzar フォーム>

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 cmdChangeSize_Click()
    '「画面のサイズ変更」フォームを表示する
    Load frmChangeSize
    frmChangeSize.Show
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

 

 

 

<frmChangeSize フォーム>

Option Explicit

Const CON_CHAGE_SIZE = 10

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

Private Sub cmdCS_Tope_Click()
    frmPDFBrauzar.Height = _
    frmPDFBrauzar.Height - CON_CHAGE_SIZE
    
    '画面のフォームサイズを整える
    Call sub_FormChangeSize
End Sub

Private Sub cmdCS_Bottom_Click()
    frmPDFBrauzar.Height = _
    frmPDFBrauzar.Height + CON_CHAGE_SIZE
    
    '画面のフォームサイズを整える
    Call sub_FormChangeSize
End Sub

Private Sub cmdCS_Left_Click()
    frmPDFBrauzar.Width = _
    frmPDFBrauzar.Width - CON_CHAGE_SIZE
    
    '画面のフォームサイズを整える
    Call sub_FormChangeSize
End Sub

Private Sub cmdCS_Right_Click()
    frmPDFBrauzar.Width = _
    frmPDFBrauzar.Width + CON_CHAGE_SIZE
    
    '画面のフォームサイズを整える
    Call sub_FormChangeSize
End Sub

Private Sub sub_FormChangeSize()
    With frmPDFBrauzar
        .AcroPDF1.Width = .Width - 10
        .AcroPDF1.Height = .Height - .AcroPDF1.Top - 40
    End With
End Sub

 

 

注意

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

  

< 戻る >

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

  1.  こんばんは。
    AxAcroPDF006を使用させていただいております。
    仕事でPDFを閲覧することが多いため、大変重宝しております。

    一度にみるPDFのページ数が多いため、コンボボックスのtwocolumnleftを選択して、2ページみれるようにしております。

    PDFを見おわって、ダイアログを開くボタンを押して、次のPDFを開いたときに、2ページ表示を維持するようにしたいのですが、そのようなことは可能でしょうか?

    コンボボックスは、twocolumnleftと表示されておりますが、
    1ページ表示になってしまいます。

    色々奮闘してみましたが、手に負えなかったため質問させていただきました。

    もしできるのであれば、アドバイスをいただけましたら幸いです。

  2. お世話になります。
    いつもAxAcroPDF006を使用させていただいております。
    PDFを見る機会が多いので使用しておりますが大変重宝しております。

    PDFのページ数が多いため、コンボボックスのtwocolumnleftを選んで、
    1画面で2ページを見るようにしております。

    PDFを見終わった後、次のPDFを開くと、コンボボックスはtwocolumnleftとなっておりますが、1画面1ページ表示になってしまいます。

    次のPDFを開いてもtwocolumnleftの状態を維持したまま開くことは可能でしょうか?

    色々試してみましたが、できなかったため質問させていただきました

    何かコメントいただけましたら幸いです。

  3. Pachyさん。初めまして。

    >次のPDFを開いてもtwocolumnleftの状態を維持したまま開くことは可能でしょうか?

    こちらのAcrobat Pro 8.2.3環境では twocolumnleft は維持されたままでPDFが表示されます。
    バージョンにより変わるみたいですね。
    『twocolumnleftの状態を維持』する事は可能です。
    以下の▼ロジックを3行追加して下さい。

    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
    '▼レイアウトモードを再設定する
    If cmbsetLayoutMode2.Value "" Then
    Call cmbsetLayoutMode2_Change
    End If
    Exit Sub
    Err_cmdReadPDF_Click:
    MsgBox Err.Number & " : " & vbCrLf & Err.Description, _
    vbOKOnly + vbCritical, _
    "実行エラー : cmdReadPDF_Click"
    End Sub

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin