Excel工作表中的非空字段在记录集中显示为空白

时间:2011-09-14 22:03:26

标签: excel-vba adodb recordset vba excel

我正在使用excel vba编写一个从Excel工作表中读取数据并对其进行处理的宏。基本上,我将数据从Excel工作簿A复制到Excel工作簿X中的工作表B。工作簿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 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

验证列是否具有相同的数字格式。

当您使用ado连接ado时,请使用第一行的格式。例如,if是数字,第二个是字符串,表中的值为空(如果创建表,则收到错误)

解决方案(工作对我来说)是导入数据之前的打开工作簿,并格式化需要格式的列,我使用范围内的属性数字格式。

[]的