我想从Excel VBA运行MS Access查询。为此,我使用ADODB.Connection和ADODB.Command来调用查询。原则上它可以工作,但名称存在问题,因为它包含斜杠:" Query_3 / 6/1/1"。运行下面的脚本,我收到一条错误消息,如" Microsoft Office Access数据库引擎找不到输入表或查询' Query_3'。"所以它并没有考虑斜杠之后的其余名称。我已经尝试用括号[]来逃避它,但它没有帮助,除了我没有找到解决方案。
重命名模块是有效的,但是它们有很多,而且还有其他的dependendies,所以这不是一个真正的解决方案。
我很高兴有任何帮助!
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
With con
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open "C:\Users\...\file.accdb"
End With
With cmd
.ActiveConnection = con
.CommandText = "Query_3/6/1/1"
.CommandType = adCmdStoredProc
End With
Set rs = New ADODB.Recordset
rs.Open cmd
...
答案 0 :(得分:0)
我认为你不会喜欢这个答案。我做了一些测试,Excel只是不尊重命名约定。我甚至调用了从Query_3 / 6/1/1构建的查询,它不起作用。我在使用Nz()函数的查询时遇到了同样的问题。不得不重新设计查询。
只有我可以看到的替代方法是Access中的一个过程将查询记录写入'临时表'(表是永久性的,记录是临时的),Excel调用此过程然后根据临时表打开记录集。