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 ソースコード

 

 

001 Option Explicit 002 003 Private Sub UserForm_Initialize() 004 '画面初期サイズを変更する 005 Me.Width = 750 006 Me.Height = 550 007 AcroPDF1.Width = Me.Width - 10 008 AcroPDF1.Height = Me.Height - AcroPDF1.Top - 40 009 010 'Tipsをセットする 011 cmdOpenPDFFile.ControlTipText = _ 012 "ローカルなPDFファイルを選択&表示する" 013 cmdReadPDF.ControlTipText = _ 014 "URL.PDFなどのPDFファイルを表示する" 015 chbDisplayToolBar.ControlTipText = _ 016 "ToolBarを表示する" 017 018 cmdPrintWithDialog.ControlTipText = _ 019 "PrintWithDialogメソッドを実行" 020 cmdPrintAll.ControlTipText = _ 021 "PrintAllメソッドを実行" 022 cmdPrintPages.ControlTipText = _ 023 "PrintPagesメソッドを実行" 024 txtFromPage.ControlTipText = _ 025 "印刷開始ページをセット" 026 txtToPage.ControlTipText = _ 027 "印刷終了ページをセット" 028 029 cmdGoBackwardStack.ControlTipText = _ 030 "GoBackwardStackメソッドの実行" 031 cmdGoFirstPage.ControlTipText = _ 032 "GoFirstPageメソッドの実行" 033 cmdGoPreviousPage.ControlTipText = _ 034 "GoPreviousPageメソッドの実行" 035 txtPageNumber.ControlTipText = _ 036 "PageNumberメソッドの実行" 037 cmdGoNextPage.ControlTipText = _ 038 "GoNextPageメソッドの実行" 039 cmdGoLastPage.ControlTipText = _ 040 "GoLastPageメソッドの実行" 041 cmdGoForwardStack.ControlTipText = _ 042 "GoForwardStackメソッドの実行" 043 044 cmbsetPageMode.ControlTipText = _ 045 "setPageModeメソッドを実行" 046 cmbsetLayoutMode.ControlTipText = _ 047 "setLayoutModeメソッドを実行" 048 cmdsetZoom.ControlTipText = _ 049 "setZoomメソッドを実行" 050 cmbsetPageMode2.ControlTipText = _ 051 "setPageModeメソッドを実行" 052 cmbsetLayoutMode2.ControlTipText = _ 053 "setLayoutModeメソッドを実行" 054 txtsetZoom2.ControlTipText = _ 055 "ズーム%をセット" 056 cmdsetZoom2.ControlTipText = _ 057 "setZoomメソッドを実行" 058 059 AcroPDF1.ControlTipText = _ 060 "PDFファイルをココに表示する" 061 cmdEnd.ControlTipText = "画面を閉じる" 062 063 'コントロールの初期値を設定する 064 AcroPDF1.setShowToolbar False 065 With cmbsetPageMode2 066 .Clear 067 .AddItem "None" 068 .AddItem "Bookmarks" 069 .AddItem "Thumbs" 070 End With 071 With cmbsetLayoutMode2 072 .Clear 073 .AddItem "Don't Care" 074 .AddItem "Single Page" 075 .AddItem "One Column" 076 .AddItem "Two Column Left" 077 .AddItem "Two Column Right" 078 End With 079 txtsetZoom2.Text = 60 'ズ-ム 100% 080 'PDFコントロール上のツールバーを設定(非表示)にする 081 chbDisplayToolBar.Value = False 082 End Sub 083 084 Private Sub cmdOpenPDFFile_Click() 085 Dim vntFileName As Variant 086 'ファイルを開くダイアログを開きます 087 vntFileName = _ 088 Application.GetOpenFilename( _ 089 FileFilter:="PDFファイル(*.PDF),*.PDF", _ 090 FilterIndex:=1, _ 091 Title:="PDFファイルを開く", _ 092 MultiSelect:=False) 093 '選択されたファイルを開きます 094 If vntFileName <> False Then 095 txtURL.Text = vntFileName 096 Call cmdReadPDF_Click 097 End If 098 End Sub 099 100 101 102 Private Sub cmdReadPDF_Click() 103 On Error GoTo Err_cmdReadPDF_Click 104 '入力チェック 105 If Trim(txtURL.Text) = "" Then Exit Sub 106 'PDFを表示する 107 AcroPDF1.src = txtURL.Text 108 'PDFコントロール上のツールバーを設定(非表示)にする 109 AcroPDF1.setShowToolbar chbDisplayToolBar.Value 110 Exit Sub 111 Err_cmdReadPDF_Click: 112 MsgBox Err.Number & " : " & vbCrLf & Err.Description, _ 113 vbOKOnly + vbCritical, _ 114 "実行エラー : cmdReadPDF_Click" 115 End Sub 116 117 Private Sub chbDisplayToolBar_Click() 118 'PDFコントロール上のツールバーを設定(表示/非表示)にする 119 AcroPDF1.setShowToolbar chbDisplayToolBar.Value 120 End Sub 121 122 Private Sub cmdGoBackwardStack_Click() 123 '2つ目のビュースタックがあれば2つ前のページ表示をし、 124 'なければ1つ目の表示したページを移動表示します。 125 AcroPDF1.goBackwardStack 126 End Sub 127 128 129 130 Private Sub cmdGoFirstPage_Click() 131 '最初のページに移動表示する。 132 AcroPDF1.gotoFirstPage 133 End Sub 134 135 Private Sub cmdGoPreviousPage_Click() 136 '1ページ前に移動表示する。 137 AcroPDF1.gotoPreviousPage 138 End Sub 139 140 Private Sub txtPageNumber_Change() 141 On Error GoTo Err_txtPageNumber_Change 142 If Trim$(txtPageNumber.Text) = "" Then Exit Sub 143 If Not IsNumeric(txtPageNumber.Text) Then 144 MsgBox "数字のみ入力です", vbOKOnly + _ 145 vbExclamation, "入力エラー" 146 subSetFocusSelect txtPageNumber 147 Exit Sub 148 End If 149 AcroPDF1.setCurrentPage txtPageNumber.Text 150 Exit Sub 151 Err_txtPageNumber_Change: 152 MsgBox Err.Number & " : " & vbCrLf & Err.Description, _ 153 vbOKOnly + vbCritical, _ 154 "実行エラー : txtPageNumber_Change" 155 End Sub 156 157 Private Sub cmdGoNextPage_Click() 158 '次ページへ移動表示する。 159 AcroPDF1.gotoNextPage 160 End Sub 161 162 Private Sub cmdGoLastPage_Click() 163 '最終ページに移動表示する。 164 AcroPDF1.gotoLastPage 165 End Sub 166 167 Private Sub cmdGoForwardStack_Click() 168 'GoBackwardStackメソッドを実行して移動表示した 169 'ページの1つ前に移動表示したページを表示します。 170 'GoBackwardStackメソッドを実行した時のみ動作します。 171 AcroPDF1.goForwardStack 172 End Sub 173 174 175 176 Private Sub cmdPrintWithDialog_Click() 177 '印刷ダイアログを表示します。ページの選択状態があれば、 178 '範囲印刷設定が印刷ダイアログに設定されます。 179 '注)PDFドキュメントのセキュリティ設定で印刷不可の場合は 180 ' 当メソッドは無視されます。 181 AcroPDF1.printWithDialog 182 End Sub 183 184 Private Sub cmdPrintAll_Click() 185 '印刷ダイアログボックスを表示しないで、 186 'PDFドキュメント全体を印刷します。 187 AcroPDF1.printAll 188 End Sub 189 190 Private Sub cmdPrintPages_Click() 191 On Error GoTo Err_cmdPrintPages_Click 192 '入力チェック 193 If Not IsNumeric(txtFromPage.Text) Then 194 MsgBox "数字のみ入力です", vbOKOnly + _ 195 vbExclamation, "入力エラー" 196 subSetFocusSelect txtFromPage 197 Exit Sub 198 End If 199 If Not IsNumeric(txtToPage.Text) Then 200 MsgBox "数字のみ入力です", vbOKOnly + _ 201 vbExclamation, "入力エラー" 202 subSetFocusSelect txtToPage 203 Exit Sub 204 End If 205 If Not (txtFromPage.Text <= txtToPage.Text) Then 206 MsgBox "印刷範囲の入力ミスです", vbOKOnly + _ 207 vbExclamation, "入力エラー" 208 subSetFocusSelect txtFromPage 209 Exit Sub 210 End If 211 '範囲指定で印刷をする。開始ページは0からです。 212 AcroPDF1.PrintPages _ 213 (txtFromPage.Text - 1), (txtToPage.Text - 1) 214 Exit Sub 215 Err_cmdPrintPages_Click: 216 MsgBox Err.Number & " : " & vbCrLf & Err.Description, _ 217 vbOKOnly + vbCritical, _ 218 "実行エラー : cmdPrintPages_Click" 219 End Sub 220 221 222 223 Private Sub cmbsetPageMode2_Change() 224 'PDFドキュメントのページ表示モードを設定。 225 '※小文字化してセットする 226 AcroPDF1.SetPageMode _ 227 StrConv(cmbsetPageMode2.Value, vbLowerCase) 228 End Sub 229 230 Private Sub cmbsetLayoutMode2_Change() 231 Dim strlayout As String 232 Select Case cmbsetLayoutMode2 233 Case "Single Page" 234 strlayout = "singlepage" 235 Case "One Column" 236 strlayout = "onecolumn" 237 Case "Two Column Left" 238 strlayout = "twocolumnleft" 239 Case "Two Column Right" 240 strlayout = "twocolumnright" 241 Case Else 242 strlayout = "dontcare" 243 End Select 244 'PDFドキュメント表示のページ・ビューに 245 'レイアウトモードを設定変更する 246 AcroPDF1.setLayoutMode strlayout 247 End Sub 248 249 Private Sub cmdsetZoom2_Click() 250 '入力チェック 251 If Not IsNumeric(txtsetZoom2.Text) Then 252 MsgBox "数字のみ入力です", vbOKOnly + _ 253 vbExclamation, "入力エラー" 254 subSetFocusSelect txtsetZoom2 255 Exit Sub 256 End If 257 'PDFドキュメントの表示倍率を設定 258 AcroPDF1.setZoom (txtsetZoom2.Text) 259 End Sub 260 261 Private Sub cmdEnd_Click() 262 '画面を閉じる 263 Unload Me 264 End Sub 265 266 Private Sub subSetFocusSelect(obj As Control) 267 '入力ミスしたコントロールにフォーカスを 268 '移動して、文字列を選択状態にする。 269 With obj 270 .SetFocus 271 .SelStart = 0 272 .SelLength = Len(obj.Text) 273 End With 274 End Sub 275


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

注意

  • 当機能は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等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



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

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