Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用包含斜杠的模块名从Excel VBA运行Access查询_Excel_Vba - Fatal编程技术网

使用包含斜杠的模块名从Excel VBA运行Access查询

使用包含斜杠的模块名从Excel VBA运行Access查询,excel,vba,Excel,Vba,我想从Excel VBA运行MS Access查询。为此,我使用ADODB.Connection和ADODB.Command调用查询。原则上它是有效的,但名称有问题,因为它包含斜杠:“Query_3/6/1/1”。运行下面的脚本时,我得到一个错误信息,比如“微软Office Access数据库引擎找不到输入表或查询‘QueRyIs3’”。因此,它不考虑SLASH后面的名称的其余部分。我已经试着用括号[]来逃避它,但它没有帮助,除此之外,我没有找到解决办法 重命名模块是可行的,但是有很多模块,并且

我想从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调用该过程,然后根据临时表打开记录集