TOP > AcroPDFLib.AxAcroPDF > Excel VBAサンプル(A)
AcroPDFLib.AxAcroPDFオブジェクトの一部を使ったExcel VBAサンプルです。
Acrobat Readerと同じ動作をします。
当ページ最下部の注意も参照してください。
Excelファイルのダウンロード
動作確認環境
- WindowsXP Pro + SP3 + フルWindowsUpdate + Acrobat Pro 8.1.2
※Acrobat Readerのみの環境では動作しません。
サンプル実行画面
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アプリ本体が環境にインストールされてないと動作しません。
< 戻る >
管理人へ
すみません。HTMLで頑張って、フォームイメージ図を作ったが、ダメでした。
呉 さんへ。
① 残念ですが見ないと分からないです。
画像等はOneDriveやDropboxなどのネットワークドライブのファイル公開機能を使えば相手に見せることができます。
当サイトで紹介している機能はAcrobat本体の1~2%程度の機能しか持っていません。つまり出来る部分が非常に少ない。よって出来ない部分は発想を変えて対処するしか手がないかもしれません。
② ハイライトに関してはかなり前から質問を受けてますが、今だに解決してない部分です。前のコメントで書いた
http://pdf-file.nnn2.com/?p=203&cpage=1#comment-930
にヒントが有ると思っていますが、未検証です。
SendKeyは失敗が多く、危険な結果を生みますからオススメできません。
諸事情で1~2週間はパソコンを開けてもコメントを返せないほど多忙になります。
ご容赦ください。