使用包含斜杠的模块名从Excel VBA运行Access查询
我想从Excel VBA运行MS Access查询。为此,我使用ADODB.Connection和ADODB.Command调用查询。原则上它是有效的,但名称有问题,因为它包含斜杠:“Query_3/6/1/1”。运行下面的脚本时,我得到一个错误信息,比如“微软Office Access数据库引擎找不到输入表或查询‘QueRyIs3’”。因此,它不考虑SLASH后面的名称的其余部分。我已经试着用括号[]来逃避它,但它没有帮助,除此之外,我没有找到解决办法 重命名模块是可行的,但是有很多模块,并且已经有其他依赖项,所以这不是一个真正的解决方案 我很高兴能得到任何帮助使用包含斜杠的模块名从Excel VBA运行Access查询,excel,vba,Excel,Vba,我想从Excel VBA运行MS Access查询。为此,我使用ADODB.Connection和ADODB.Command调用查询。原则上它是有效的,但名称有问题,因为它包含斜杠:“Query_3/6/1/1”。运行下面的脚本时,我得到一个错误信息,比如“微软Office Access数据库引擎找不到输入表或查询‘QueRyIs3’”。因此,它不考虑SLASH后面的名称的其余部分。我已经试着用括号[]来逃避它,但它没有帮助,除此之外,我没有找到解决办法 重命名模块是可行的,但是有很多模块,并且
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
...
我想你不会喜欢这个答案的。我做了一些测试,Excel不会遵守命名惯例。我甚至调用了一个由该查询构建的查询\u 3/6/1/1,但它不起作用。我在使用Nz()函数的查询中遇到了同样的问题。不得不重新设计查询 我能看到的唯一替代方法是Access中的一个过程,该过程将查询记录写入“临时表”(表是永久的,记录是临时的),Excel调用该过程,然后根据临时表打开记录集