从Excel VBA运行Access查询,模块名称包含斜杠

时间:2017-03-06 15:28:18

标签: excel-vba vba excel

我想从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
...

1 个答案:

答案 0 :(得分:0)

我认为你不会喜欢这个答案。我做了一些测试,Excel只是不尊重命名约定。我甚至调用了从Query_3 / 6/1/1构建的查询,它不起作用。我在使用Nz()函数的查询时遇到了同样的问题。不得不重新设计查询。

只有我可以看到的替代方法是Access中的一个过程将查询记录写入'临时表'(表是永久性的,记录是临时的),Excel调用此过程然后根据临时表打开记录集。