SQL 运行时错误的 Excel ADODB 连接
Posted
技术标签:
【中文标题】SQL 运行时错误的 Excel ADODB 连接【英文标题】:Excel ADODB connection for SQL runtime error 【发布时间】:2016-04-05 09:53:16 【问题描述】:我试图使用 SQL 查询将我的 excel 工作表用作表格。我写了以下代码:
Global objConn As ADODB.Connection
Global ConnString As String
Global SQL As String
Global objRS As ADODB.Recordset
Global masterFile As String
Public Sub XL_DB_connect()
Set objConn = New ADODB.Connection
masterFile = ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name
ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & masterFile & ";" & _
"Extended Properties=""Excel 12.0;" & _
"HDR=Yes;"";"
objConn.ConnectionString = ConnString
objConn.Open
End Sub
Public Sub executeQuery()
objRS.Source = SQL
objRS.ActiveConnection = objConn
objRS.Open
End Sub
Public Sub XL_DB_relMem()
Set objRS = Nothing
Set objConn = Nothing
SQL = vbNullString
End Sub
Public Sub test()
Set objRS = New ADODB.Recordset
objRS.CursorLocation = adUseClient
SQL = "select PatientGID, count(LOT) from [Sheet1$] group by PatientGID"
Debug.Print SQL
Call XL_DB_connect
Call executeQuery
objRS.MoveFirst
Range("Output").Resize(10, 2).ClearContents
Range("Output").CopyFromRecordset objRS
End Sub
Sheet1 具有从单元格 A1 开始的以下列 患者GID 进展 很多 新LoT loTF日期 实际方案 loTRegimenClass 进度类 PERMetFlag
在运行代码时,我收到以下错误:
“运行时错误'-2147467259 (80004005)'
'Sheet1$' 不是有效名称。确保它不包括 无效字符和标点符号,并且它不是太长”
【问题讨论】:
这很好,按照你的想法做,如果工作表实际上没有被称为Sheet1
,你只会看到这个错误,你确定是吗? (顺便说一句,您的测试使连接保持打开状态)
我相信它就是这么叫的。还有其他我可能做错的事情吗?
你可能想要Set objRS.ActiveConnection = objConn
在哪个子程序中? XL_DB_relMem() ?
它按预期对我有用(Excel 2016)。尝试在这两个地方重命名工作表,看看会发生什么。
【参考方案1】:
我今天遇到了同样的错误。我发现原因是excel文件处于只读状态。当我将它保存在另一个位置时,错误立即得到修复。
【讨论】:
以上是关于SQL 运行时错误的 Excel ADODB 连接的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA - 搜索范围和连接的 SQL ADODB 记录集以在列中匹配写入结果集
在 VBA 中使用 SQL 连接两个 Excel 工作簿中的数据(只读错误)
如何在保存到 OneDrive 的 Excel 工作簿中运行 SQL 查询?