Board logo

標題: [發問] 請問我用excel巨集 用sql語法 [打印本頁]

作者: Anny    時間: 2012-12-21 14:52     標題: 請問我用excel巨集 用sql語法

請問我用excel巨集 用sql語法取﹝大大1217標籤$l2:l39﹞要放在同在A2的位子,語法如下:
Sub get_data_with_sql()
    Set rs = CreateObject("adodb.recordset")
    rs.Open "select * form [大大1217標籤$l2:l39] ", "Driver=(Microsoft Excel Driver (*.xls));dbq=C:\大大高中1217.xls"
    Cells(2, 1).CopyFromRecordset (rs)
End Sub
會出現'OPEN'方法('._recordset'物件)失敗
請問各位高手這是哪個部分出問題了。
感謝!
作者: alexliou    時間: 2012-12-21 18:46

回復 1# Anny
1. Driver 的括弧要用大括號
2. from寫成form

應該是
rs.Open "select * from [大大1217標籤$L2:L39]", "Driver={Microsoft Excel Driver (*.xls)};dbq=C:\大大高中1217.xls"
作者: Anny    時間: 2012-12-21 23:21

太感謝了,真的可以了耶!
可是我加了where 以後又不行了。主要是想將itm_no這個欄位不為空的才copy到Cells(1, 1).
會出現 error "參數太少,預期個數1"
Sub get_data_with_sql()
    Set rs = CreateObject("adodb.recordset")
    rs.Open "select * from [大大1217標籤$L2:V39] where itm_no  is not null", "Driver={Microsoft Excel Driver (*.xls)};dbq=C:\Users\dsc\Documents\大大高中1217.xls"
    Cells(1, 1).CopyFromRecordset (rs)
End Sub
作者: alexliou    時間: 2012-12-22 08:13

本帖最後由 alexliou 於 2012-12-22 08:15 編輯

回復 3# Anny
item_no is not null  是英文語法
應該怎麼改成程式語法呢?
作者: alexliou    時間: 2012-12-22 08:44

本帖最後由 alexliou 於 2012-12-22 08:45 編輯

回復 3# Anny
我猜測Item_no應該指的是你所想要作為判斷依據的欄位名稱
在SQL句子中的From clause 所指定範圍 的第一列預設被視為標題列 (或欄位名稱)
我假設你把每個欄位的標題放在第一列
所以只要改為
rs.Open "select * form [大大1217標籤$L1:V39]  where itm_no  is not null", "Driver=(Microsoft Excel Driver (*.xls));dbq=C:\大大高中1217.xls"
就可以了
作者: Anny    時間: 2012-12-22 09:12

我將item_no 的欄位名稱改成 項次  就可以了耶!(雖然不知道為什麼)
感謝Alex喔




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)