如何使用 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
我有一个带有命名范围的工作簿。它的名字是 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