yCatです。
過去にも同じなログがありましたが、若干SQLの書き方が異なったので
投稿しました。
関連する過去ログでは、全ての項目を抽出(*を使用)にしているのですが、
ある項目だけを抽出したい場合は、SQL文中にどのように記載したらよいのでしょうか。
↓プログラム
シート(R001_S1)のF1
Private Sub Form_Load()
Dim dbExcel As Database
Dim rsExcel As Recordset
Dim strSQL As String
Dim strMsg As String
Set dbExcel = DBEngine.Workspaces(0).OpenDatabase_
("E:\R001.xls", False, False, "Excel 8.0;HDR=No;")
'---↓問題のSQL
'抽出したいデータは、3項目(列名はExcelのデフォルト名称)で
'条件として、F列が数値の10に該当し、かつF列とH列が等しいデータを
'抽出したい。
'シート名称は、「R001_S1」
'D列、F列、J列の各セルは数値で定義している。
strSQL = "SELECT [D],[F],[J] FROM [R001_S1$] " & _
"WHERE [F]=10 AND [F]=[H]"
'---↑
Set rsExcel = dbExcel.OpenRecordset(strSQL)
Do Until rsExcel.EOF
strMsg = rsExcel.Fields(1) & " " & _
rsExcel.Fields(0) & " " & _
rsExcel.Fields(2)
rsExcel.MoveNext
Loop
rsExcel.Close
dbExcel.Close
Set rsExcel = Nothing
Set dbExcel = Nothing
MsgBox strMsg
End Sub
↓過去ログ
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200207/02070027.txt
以上 宜しくお願いします。
投稿した内容に誤った文がありました。
「↓プログラム」の次の行に「シート(R001_S1)のF1」とありますが、
この文は無視して下さい。
この場合(DAOでHDR=NO)は、
F1,F2,F3....
となったかと。
もげさん、ありがとうございます。
以下の過去ログに答えが記載されてました。
http://madia.world.coocan.jp/vb/vb_bbs/200309_03090083.html
とりあえず、DBオープン時のHDR=YESにし、
もともとのExcelシートの先頭行に見出しを入れました。
これにより、見出しを列名としてSQLを組んだところ、ちゃんとデータが
取れました!!
ありがとうございました。
ツイート | ![]() |