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

Excel工作表中的非空字段在记录集中显示为空,excel,adodb,recordset,vba,Excel,Adodb,Recordset,Vba,我正在使用excel vba编写一个宏,从excel工作表中读取数据并对其进行处理。基本上,我是将数据从Excel工作簿A复制到Excel工作簿B中的工作表X。工作簿B包含一个宏,该宏执行此复制操作,然后将数据从工作表X读取到记录集中 我遇到了一个很奇怪的问题。我的问题是,当我试图打印记录集值时,记录集中有一个字段显示为空白 这是我的代码中有问题的部分packageName被传递到此包含字符串的函数中。记录集对象objRecordset错误地获取了Name字段,并且在我尝试打印该项的记录集值时显

我正在使用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")
我也有同样的问题

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

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

解决方案(我的工作)是在导入数据之前打开工作簿,并使用所需的格式格式化列,我使用范围中的PropertieNumberFormat


[]的

对我有用。但是,如果没有实际的数据集,很难进行真正的测试。1)查看源列是否有任何奇特的格式(如“文本”)。。。。2) “姓名”字段可以作为手机地址吗?谢谢大家的建议。知道它是否与连接字符串中的“扩展属性”有关吗?另外,如何确保该名称不会被误解为手机地址?源代码没有奇特的格式。它只是一个包含csv的字段。我只是用类似的数据手工创建了一个工作表,它工作得很好,所以我认为它可能与实际的数据集有关,但不确定是什么。