まりふのひと

Excel2010からAccessデータベース(2000ファイル形式)を使う

下松市のFS社を訪問にしたら、「図面の管理」で良い方法がないか‥‥ と聞かれたので、持論を展開した。

  1. 図面を PDF あるいは PINGJPEGでも良いが...)で保存する。
  2. Excel に取り込んで、クリックしたら「見られる」ようにする。



帰宅後、mdb データベースを Excel に取り込む方法を検索していたら、ジャストのページを見つけた。
ExcelからAccessデータベースを使う (Excel-Excel
ありがとう...

§1.ADOを使う前の設定

VBE画面から

  1. [ツール]メニュー ⇒[参照設定]をクリック。
  2. R Microsoft ActiveX Data Objects 6.1 Library にチェックを入れ、
  3. [OK]で閉じる。
§2.QueryTableでデータベースを読み込む

  1. Public Const MDBName As String = "SampleDat1.mdb"


  1. Dim que As QueryTable
  2. Dim i As Long, LastRow As Long
  3. Dim strSQL As String, strFullPath As String, strPasteTop As String
  4.  
  5. Sheets("作業指図").Select
  6. 'SQL
  7. strSQL = "SELECT 受付No, 得意先コード, 得意先名, 品名コード, 品名 FROM D_作業指図" _
  8. & " WHERE (((受付No) Is Not Null) AND *1"
  9. 'QueryTableオブジェクト
  10. Set que = ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=MS Access Database;DBQ=" _
  11. & macBookPath & "\" & MDBName _
  12. , Destination:=ActiveSheet.Range("A1"), Sql:=strSQL)
  13. 'クエリーを実行し、終わるまで待つ。
  14. que.Refresh BackgroundQuery:=False
  15. Set que = Nothing

苦労したのが No.14 の BackgroundQuery:=False
これにより、クエリーが終わるのを待って次のコマンドに進む。
解ってみれば「当然じゃろ」と言われるかもしれないが...

*1:製造完了日) Is Not Null