• ベストアンサー

エクセルVBAでSQLを使ってアクセルのデータを引き出す

下記マクロ「アクセスからインポート」はアクセスの人口テーブルから番号フィールドがエクセルシートセルA1に入力された番号と一致するデータのみをエクセルのセルA5以下に入力するマクロですが、★部分を書き換えて番号フィールドがセルA1、都道府県フィールドがセルB2と一致するデータを取り出したい。 Sub アクセスからインポート() Dim cn As Connection Dim rs As Recordset Dim SelCmd As String 'データベースに接続 Set cn = New Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\Excel\Sample.mdb" cn.Open '★↓これはうまく動きます SelCmd = "SELECT * FROM 人口 " _ & "WHERE 番号 = " & Range("A1").Value 'データを取得 Set rs = New Recordset rs.Open SelCmd, cn 'シートに貼り付け Range("A5").CopyFromRecordset rs '後処理 rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub  ★↓これを入力しようとするとエラーになります。 SelCmd = "SELECT * FROM 人口 " _ & "WHERE 番号 = " & Range("A1").Value and 都道府県 = " & Range("B1").Value  andの書き方が悪いのでしょが、いろいろ試したがうまく行きません。 初心者ですがよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

たびたびすみません。 &も要りそうです 【例】 & "WHERE 番号 = " & Range("A1").Value & " and 都道府県 = " & Range("B1").Value

hiroshi77777
質問者

お礼

うまくいきました。ありがとうございます。

その他の回答 (2)

  • dober-o
  • ベストアンサー率59% (260/439)
回答No.3

and が問題ではなく "" の区切り位置ですかね。 SelCmd = "SELECT * FROM 人口 " _ & "WHERE 番号 = " & Range("A1").Value & " and 都道府県 = " & Range("B1").Value ちなみに都道府県フィールドが数値ではなく文字列なら SelCmd = "SELECT * FROM 人口 " _ & "WHERE 番号 = " & Range("A1").Value & " and 都道府県 = """ & Range("B1").Value & """" となります。

hiroshi77777
質問者

お礼

うまくいきました。ありがとうございます。

回答No.1

" が1つ足りないとか、、 SelCmd = "SELECT * FROM 人口 " _ & "WHERE 番号 = " & Range("A1").Value and 都道府県 = " & Range("B1").Value  ↑" 【修正例】 & "WHERE 番号 = " & Range("A1").Value " and 都道府県 = " & Range("B1").Value 

関連するQ&A