Excel VBA 和 SQL 内连接 ODBC 表和 Excel 表

问题描述

我真的希望这可以实现。基本上,我有一个例程来查询我在 Oracle sql Developer 中创建的视图。但是,整个视图的行数比我需要的多数千行,我想根据同一个 Excel 文件中的零件编号列表仅提取一个子集,但我尝试的所有操作都会导致错误

这是现在的代码

--Create Connection and Recordset objects
Set odmConn = New ADODB.Connection
Set odmRec = New ADODB.Recordset
odmConn.ConnectionTimeout = 0
odmConn.CommandTimeout = 0
odmRec.CursorLocation = adUseClient

--Open Connection
odmConn.Open "Driver={Microsoft ODBC for Oracle};SERVER=ODBCServer;UID=MyID;PWD=MyPass;"

--Define sql string and sheet name
strsql = "SELECT A.* " & _
         "FROM MyID.MyTable A" & _
         "INNER JOIN " & _
         "(SELECT * FROM [Excel 12.0 Xml;HDR=Yes;Database=MyExcelPath].[MAT$]) B" & _
         "ON A.MATERIAL = B.MATERIAL"
shName = "MySheet"

--Extract new data to Recordset
odmRec.Open strsql,odmConn,adOpenStatic,adLockReadOnly

If odmRec.RecordCount <> 0 Then
    --copy new data from Recordset
    ThisWorkbook.Sheets(shName).Range("A2").copyFromrecordset odmRec
End If

以上导致“ORA-00903:无效表名”错误

我也试过 OPENROWSET 和 OPENDATASOURCE 都无济于事。这两者都会导致出现“缺少右括号”或“sql 命令未正确结束”的错误

有没有办法做到这一点?

解决方法

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

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

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