在Excel中过滤和排序ADO Recordset引发错误

问题描述

我有一个包含多张工作表的Excel工作簿,并将所有数据提取一个2D数组中。我想让用户在GUI(用户窗体)中查看数据,但为了简化过滤和排序,我想将数据放入ADO记录集中。为了避免处理连接,我使用与here类似的方法将数组读入记录集。似乎可行:我可以获取字段名称,也可以将记录集“转储”到Excel工作表中。

但是,当我尝试过滤记录集时出现错误运行时错误'-2147217825(80040e5f)'过滤器无法打开。

如果我尝试排序,则会收到类似的错误运行时错误'-2147217824(80040e60)'无法应用排序顺序。'

这是有问题的代码

Dim Arr()
Dim rsADO As ADODB.Recordset,lngR As Long,lngC As Long
'this gives a 2d array (it happens to be about 300 rows and 20 columns); first row = column headers:
Arr = Sheet1.UsedRange
'Note:  in real life my array pulls info from several different sheets


Set rsADO = New ADODB.Recordset
'Set up recordset fields from 1st row in array
For lngC = 1 To UBound(Arr,2)
    rsADO.Fields.Append Arr(1,lngC),adVariant
Next lngC

'read array values into recordset:
rsADO.Open
For lngR = 1 To UBound(Arr,1)
    rsADO.AddNew
    For lngC = 1 To UBound(Arr,2)
        rsADO.Fields(lngC - 1).Value = Arr(lngR,lngC)
    Next lngC
    rsADO.MoveNext
Next lngR
rsADO.MoveFirst

MsgBox rsADO.RecordCount,rsADO.Fields(0).Name 'Seems to work fine
Sheet7.Cells.Clear
Sheet7.Range("A1").copyFromrecordset rsADO 'works fine too

rsADO.sort = "Country"  'throws error as above
rsADO.filter = "Country = 'JAPAN'" 'throws error as above

我很困惑,因为如果我将Excel工作表范围直接读入ADO记录集(使用描述为here方法),则可以进行筛选和排序。但是我更喜欢通过数组,因为在将数据放入记录集之前,我会从做各种事情的各种工作表中提取信息。 (我想我可以将数组读取到工作表中,然后使用第二种方法将数据拉入记录集...但这似乎是不必要的步骤。)

不确定这是否重要,但是在源工作表中,尽管Excel正确解释了日期并以“日期”格式存储,但Excel单元格格式大多为“常规”格式。

关于如何获取过滤器和进行排序的任何想法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...