Microsoft Access 掲示板

連想配列のキーに、以上や以下の要素を使う方法(PDF内の表をAccessに取り込んで活用したい) / 9

9 コメント
views
4 フォロー
9
hatena 2024/06/02 (日) 18:17:17 修正

ここはAccessに関する質疑応答、技術的な情報交換の場です。
それを踏まえて、他の閲覧者や後から検索で訪問した人にとって、意味のある情報になるように、下記のような要件に対してAccessでどのように解決するかという観点で、回答をおいておきます。


  • PDF内に表データがある。
  • それをAccessに取り込んで、有効活用したい。
  • 表データは、下記のようなものとする。
下限値上限値gr1std1gr2std2
063000158000188000
6300073000268000188000
7300083000378000188000
8300093000488000188000
93000101000598000298000
10100010700061040003104000
10700011400071100004110000

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
通報 ...