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 查询?

使用SQL Server 2012的Windows 10 64位ADODB连接失败

如何实现EXCEL实时提取SQL中表的数据?

将数据插入表时出现 ADODB VBA 自动化错误