【发布时间】:2014-07-03 00:05:04
【问题描述】:
我正在使用 excel vba 编写一个宏,该宏从 Excel 工作表中读取数据并对其进行处理。基本上,我正在将 Excel 工作簿 A 中的数据复制到 Excel 工作簿 B 中的工作表 X 中。工作簿B 包含一个宏,该宏执行此复制,然后将数据从工作表X 读取到记录集中。
我遇到了一个非常奇怪的问题。我的问题是,当我尝试打印记录集值时,记录集中有一个字段显示为空白。
这是我的代码有问题的部分。 packageName 被传递到这个包含字符串的函数中。记录集对象objRecordset 错误地获取Name 字段并在我尝试打印该项目的记录集值时显示为空白,即使它不是空的。其他字段打印得很好。名称字段包含字母和数字,例如ABC1232WHSJ, ABCD3456。知道出了什么问题吗?
Dim objConnect As ADODB.Connection, objRecordset
Set objConnect = New ADODB.Connection
objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open "Select * FROM [Sheet1$] WHERE Package LIKE '" & _
packageName & "'", objConnect, adOpenStatic, adLockOptimistic, adCmdText
Debug.Print objRecordset.Fields.Item("Package")
Debug.Print objRecordset.Fields.Item("Name")
【问题讨论】:
-
为我工作。但是,如果没有您的实际数据集,很难真正进行测试。
-
1) 查看源列是否有任何花哨的格式(如“文本”).... 2) 是否会将“名称”字段误解为单元格地址?
-
感谢大家的建议。知道它是否与连接字符串中的“扩展属性”有关吗?另外,如何确保名称不会被误解为单元格地址?源没有花哨的格式。它只是一个包含 csv 的字段。我刚刚手动创建了一个包含类似数据的工作表,它运行良好,所以我认为它可能与实际数据集有关,但不确定是什么。