こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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の書き方が悪いのでしょが、いろいろ試したがうまく行きません。

初心者ですがよろしくお願い致します。

投稿日時 - 2006-05-06 12:02:13

QNo.2134063

すぐに回答ほしいです

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

たびたびすみません。
&も要りそうです

【例】
& "WHERE 番号 = " & Range("A1").Value & " and 都道府県 = " & Range("B1").Value

投稿日時 - 2006-05-06 12:12:29

お礼

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

投稿日時 - 2006-05-06 17:41:03

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

and が問題ではなく "" の区切り位置ですかね。

SelCmd = "SELECT * FROM 人口 " _
& "WHERE 番号 = " & Range("A1").Value & " and 都道府県 = " & Range("B1").Value

ちなみに都道府県フィールドが数値ではなく文字列なら

SelCmd = "SELECT * FROM 人口 " _
& "WHERE 番号 = " & Range("A1").Value & " and 都道府県 = """ & Range("B1").Value & """"

となります。

投稿日時 - 2006-05-06 12:19:14

お礼

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

投稿日時 - 2006-05-06 17:41:24

ANo.1

" が1つ足りないとか、、

SelCmd = "SELECT * FROM 人口 " _
& "WHERE 番号 = " & Range("A1").Value and 都道府県 = " & Range("B1").Value 
↑"
【修正例】
& "WHERE 番号 = " & Range("A1").Value " and 都道府県 = " & Range("B1").Value 

投稿日時 - 2006-05-06 12:10:50

あなたにオススメの質問