我有一個命名范圍的作業簿。它的名字是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
我嘗試用其他字符替換\來測驗它是否是由非法字符引起的。我測驗的字符是~!@#$%^&*()_ -={}|[]:";'<>?,./、空格和雙\。
我對SQL一無所知。
如果有人能告訴我如何做到這一點,非常感謝。
謝謝你。
uj5u.com熱心網友回復:
編輯:我很抱歉,我發現微軟的參考資料清楚地寫著“不要那樣做”:https ://docs.microsoft.com/en-us/office/troubleshoot/access/error-using-special-characters
ADODB 驅動程式正在使用 MSAccess 庫,因此您為 MSAccess 找到的任何規則都適用于您的情況。如果您查看標題為“問題 3 ”的部分,其中參考了斜杠字符,答案是“要解決此問題,請不要使用特殊字符”。
嘗試在名稱周圍添加單引號:
With rst
.Open Source:="SELECT * FROM ['" & namedRange & "']", _
ActiveConnection:=cn, _
CursorType:=adOpenStatic, _
LockType:=adLockReadOnly, _
Options:=adCmdText
End With
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/479532.html
上一篇:獲取查詢重繪期間傳輸的資料量
