[英]Non-empty field from Excel sheet shows up as blank in recordset
我正在使用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连接时,请为第一行使用一种格式。 例如,如果是一个数字,而第二个是字符串,则表中的值为空(如果创建表,否则会收到错误)
解决方案(适合我的方法)是在导入数据之前打开工作簿,并用需要的格式设置列的格式,我使用范围内的属性numberformat。
[]的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.