- ベストアンサー
外部からPDF内の文字を検索してページを開きたい
- 外部からPDF内の文字を検索してページを開く方法について質問があります。
- Excelデータには個人コードと氏名と点数があります。
- Excelデータが入っているファイルにプルダウンで3種類のPDFを作成し、指定したPDFを開いて個人コードがあるページを開く方法を知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
回答が来ませんね。 一つに、Excelから他アプリで作られたファイルを操作するのは結構敷居が高いです。かつ、PDFファイルの場合、質問者側と回答者側のAcrobat Readerのバージョンや機能が影響してきます。私のバージョンは閲覧やコピー程度はできますが、本格的な編集はできません。編集しようとすると上位版の購入画面が出てきます。 そういうわけで、私の充分な機能が無い状態で、Excelのマクロを考えてみました。 おおまかな流れは、 →PDFファイル選択、個人コード入力 →ボタンを押してマクロの実行 →マクロでShellを通してPDFファイルを起動 →マクロでExcelからSendKeysメソッドを使い、PDFで検索を行う です。 添付図左上のように、 セルB3に入力規則(リストで「氏名順,個人コード順,点数順」) 3つのPDFファイルは、氏名順.pdf,個人コード順.pdf,点数順.pdfとしています。 セルD3に個人コードを入力します。 ボタン(ActiveXのボタン)を一つ配置します。これをダブルクリックして下記マクロを登録します。 コード内の、 *** アクロバットリーダーのパス *** PDFファイルがあるフォルダー *** 指示をするシート(必要があれば) *** PDFファイルを選択するセル(必要があれば) *** 個人コードを入力するセル(必要があれば) については、質問者様の環境に合わせてください。 PDFの起動を待つWaitは2秒にしています。これも変更可能です。 (追記) 3つのファイルがPDFでなく、Excelブックなら、かなりのことができ、事前に個人コードを読み込んで、「個人コードを選択する」ことも簡単に実現できます。3つのファイルの内容が分からないので、添付図のように、1行ごとのデータにしてテストしました。 また、PDFファイルでは検索をしていますが、PDFの検索ウインドウは表示したままです。これを消すと個人コードがどこにあるのか分からなくなるからですが、選択した状態での消し方が分からないのが本音です。 環境やデータファイルの内容が不明なため、コードは参考程度にしてください。当方win10、Excel2010です。 Private Sub CommandButton1_Click() Dim ws As Worksheet '// ワークシート Dim pdfFLD As String '// PDFフォルダー Dim pdfFname As String '// PDFファイル名(フルパス) Dim kojinCode As String '// 個人コード '// 設定 Dim acroPath As String '// *** アクロバットリーダーのパス acroPath = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" pdfFLD = "N:\履歴\Work2" '// *** PDFファイルがあるフォルダー '// 入力確認 Set ws = Worksheets("Sheet1") '// *** 指示をするシート kojinCode = ws.Range("D3") '// *** PDFファイルを選択するセル pdfFname = ws.Range("B3") '// *** 個人コードを入力するセル If Not (pdfFname <> "" And kojinCode <> "") Then MsgBox "PDFファイルの選択と個人コードの入力をしてください" Exit Sub End If '// 検索する個人コードをクリップボードに送る '// (PDFファイルの検索用) With New MSForms.DataObject .SetText kojinCode .PutInClipboard End With '// PDFファイルを開く pdfFname = pdfFLD & "\" & pdfFname & ".pdf" Shell acroPath & " " & pdfFname, vbNormalFocus Application.Wait Now + TimeValue("0:00:02") '// 2秒待つ '// SendKeysでPDFファイルを検索 SendKeys "^{f}" SendKeys "^{v}" SendKeys "{enter}" End Sub