【问题标题】:Excel ADODB connection for SQL runtime errorSQL 运行时错误的 Excel ADODB 连接
【发布时间】: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)。尝试在这两个地方重命名工作表,看看会发生什么。

标签: sql excel runtime-error adodb vba


【解决方案1】:

我今天遇到了同样的错误。我发现原因是excel文件处于只读状态。当我将它保存在另一个位置时,错误立即得到修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2021-07-01
    • 2020-03-24
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多