我正在使用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")
答案 0 :(得分:0)
我遇到了同样的问题。
验证列是否具有相同的数字格式。
当您使用ado连接ado时,请使用第一行的格式。例如,if是数字,第二个是字符串,表中的值为空(如果创建表,则收到错误)
解决方案(工作对我来说)是导入数据之前的打开工作簿,并格式化需要格式的列,我使用范围内的属性数字格式。
[]的