ここはAccessに関する質疑応答、技術的な情報交換の場です。
それを踏まえて、他の閲覧者や後から検索で訪問した人にとって、意味のある情報になるように、下記のような要件に対してAccessでどのように解決するかという観点で、回答をおいておきます。
- PDF内に表データがある。
- それをAccessに取り込んで、有効活用したい。
- 表データは、下記のようなものとする。
下限値 | 上限値 | gr1 | std1 | gr2 | std2 |
---|---|---|---|---|---|
0 | 63000 | 1 | 58000 | 1 | 88000 |
63000 | 73000 | 2 | 68000 | 1 | 88000 |
73000 | 83000 | 3 | 78000 | 1 | 88000 |
83000 | 93000 | 4 | 88000 | 1 | 88000 |
93000 | 101000 | 5 | 98000 | 2 | 98000 |
101000 | 107000 | 6 | 104000 | 3 | 104000 |
107000 | 114000 | 7 | 110000 | 4 | 110000 |
PDFから表データを取り込む
WordでPDFファイルを開きます。
欲しい表部分をコピーしてエクセルのシートに貼り付けます。
これをAccessにインポートします。
これで、pdfの表データをAccessのテーブルとして取り込めます。
これは1回のみの作業なのでVBAにするまでもないでしょう。
VBAで自動化したい場合は、下記等を参考に。
【Excel/VBA】PDFやWordから表データだけを抽出するマクロ | hamalabo
キー値をもとに、下限値と上限値の範囲に合致するデータをとりだす。
取り込んだテーブル名はTbl1とする。
[条件値]と[下限値]フィールドにインデックスを設定する。
Const cSQL = ""SELECT * FROM Tbl1 WHERE 下限値<=[x] AND 上限値>[x];"
Dim rs As DAO.Recordset, x As Long
x = Val(InputBox("数値を入力"))
Set rs = CurrentDB.OpenRecordset(Replace(cSQL,"[x]",x))
If rs.EOF Then
MsgBox "該当するデータはありません。"
Else
MsgBox "gr1: " & rs!gr1 & vbCrLf & _
"std1: " & rs!std1 & vbCrLf & _
"gr2: " & rs!gr2 & vbCrLf & _
"std2: " & rs!std2
End If
通報 ...