基本上,我想基于VBA中的查询从访问中提取一列。 我的示例代码如下,没有发现错误,但唯一起作用的是它只是打开excel文件,并且应该复制访问数据。
'Set db = OpenDatabase("\\location\names.mdb")
Set rs = db.OpenRecordset("select first_name from customerinfo " _
& "where datehired between #" & (DTPicker1) & "# and #" & (DTPicker2) & "# ;")
If rs.RecordCount <> 0 Then
Dim x As Integer
Dim count As Integer
Dim PATH, file As String
PATH =("\\location\Extracted Data.xlsm")
file = Right$(PATH, Len(PATH) - InStrRev(PATH, "\"))
Workbooks.Open PATH
Workbooks(file).Activate
count = rs.RecordCount
For x = 2 To count
Workbooks(file).Sheets("extracted").Range("a" & x) = rs.Fields("first_name")
Next
End If'
我应该在Excel中复制3个结果。有人可以帮助我找到我的代码中似乎缺少的内容吗? :(
答案 0 :(得分:0)
例如,在将记录集完全加载到动态集上之前,您正在使用.RecordCount
。可能返回1,因为仅加载了1条记录,使您的代码跳过For x = 2 To count
(因为for x=2 to 1
)
第二,您实际上并没有移动记录集。
一种更好的方法(除非我可能错过了其他错误):
x = 2
Do While Not rs.EOF 'While not at the end of the recordset
Workbooks(file).Sheets("extracted").Range("a" & x) = rs.Fields("first_name")
x = x + 1
rs.MoveNext 'Move to next record
Loop