我要做的就是在Excel工作表(即命名范围,甚至A1:F100)上采用标准范围,并在其上运行一些SQL查询,并返回一个我可以在VBA代码中单步执行的记录集,或者甚至只是粘贴到同一工作簿中的其他工作表中.
使用ADODB是一个想法,但我怎么能设置connectionstring指向当前工作簿中的某个范围?
我知道在使用Microsoft查询向导之前,这不是理想的,但可以使用.我似乎无法将此引用到工作表中的范围,只能引用其他excel文件.
这是我留下的功能.当我运行它几次我的excel崩溃与通常的资源外错误消息.我已从电子表格中删除了此功能,并且所有内容都无缝运行多次,因此肯定是由此处的代码引起的.
我已经清理了所有物体(正确吗?).有没有人有什么想法会出错?连接字符串中是否有可以调整的东西,或者它可能与GetRows方法返回的变量有关?
我正在使用MS ADO 2.8,并且也尝试过2.5具有相同的行为.
Function getTimeBuckets() As Collection
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim dateRows As Variant
Dim i As Integer
Dim today As Date
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Set getTimeBuckets = New Collection
strFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
cn.Open strCon
strSQL = "SELECT DISTINCT(Expiration) FROM [PositionSummaryTable] where …Run Code Online (Sandbox Code Playgroud) 执行以下行时,将引发1004运行时错误(应用程序定义或对象定义错误)
rangeString = ActiveWorkbook.Names.Item("MyTableName").RefersToLocal
Run Code Online (Sandbox Code Playgroud)
我看不出我的代码有什么问题,表名似乎是正确的.这段代码在类模块中,我不是vba专家,所以我不知道是否会引入范围等任何问题.