如何使用 VBA ADODB 连接连接已关闭的工作簿以获取带有字符 \ 的命名范围

how to use VBA ADODB connection to connect a closed workbook to get named range with character \

我有一个带有命名范围的工作簿。它的名字是 A\B.

我想使用 Adodb 连接和记录集来获取命名范围的值。为此,我需要先打开具有该命名范围的记录集。

如果其他命名范围的名称不包含 \.

,则此方法适用于其他命名范围
Public Sub test()
    Dim Path As String
    Path = "D:\New.xlsx"
    Dim cn As New ADODB.Connection
    cn.Open ConnectionString:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1"";"
    Dim rst As New ADODB.Recordset
    Dim namedRange As String
    namedRange = "A\B"
    'namedRange = Replace(namedRange, "\", ".")
    With rst
        .Open Source:="SELECT * FROM [" & namedRange & "]", _
              ActiveConnection:=cn, _
              CursorType:=adOpenStatic, _
              LockType:=adLockReadOnly, _
              Options:=adCmdText
    End With
End Sub

我尝试将\换成其他字符来测试是不是非法字符导致的。我测试的字符是 ~!@#$%^&*()_+-={}|[]:";'<>?,./, space and double \.

我对SQL一无所知。

如果有人能告诉我怎么做,不胜感激。

谢谢。

编辑:抱歉,我找到了 Microsoft 的参考资料,其中明确指出“不要那样做”:https://docs.microsoft.com/en-us/office/troubleshoot/access/error-using-special-characters

ADODB driver 正在使用 MSAccess 库,因此您为 MSAccess 找到的任何规则都适用于您的情况。如果您查看标题为 问题 3 的部分,其中引用了斜线字符,答案是 “要解决此问题,请不要使用特殊字符。”

尝试在名称周围添加单引号:

With rst
    .Open Source:="SELECT * FROM ['" & namedRange & "']", _
          ActiveConnection:=cn, _
          CursorType:=adOpenStatic, _
          LockType:=adLockReadOnly, _
          Options:=adCmdText
End With