Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL运行时的Excel ADODB连接错误_Sql_Excel_Runtime Error_Adodb_Vba - Fatal编程技术网

SQL运行时的Excel ADODB连接错误

SQL运行时的Excel ADODB连接错误,sql,excel,runtime-error,adodb,vba,Sql,Excel,Runtime Error,Adodb,Vba,我试图使用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 mast

我试图使用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
表1从单元格A1开始有以下列 患者ID
进展 很多 纽洛特
loTFdate
实际注册表
莲花纲 progressionClass
永久旗

运行代码时,出现以下错误:

“运行时错误”-2147467259(80004005)”

“Sheet1$”不是有效名称。请确保它不包括 无效字符和标点符号,且不太长“


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

这很好&您认为,只有当工作表未实际调用
Sheet1
时,才会看到此错误,您确定吗?(顺便说一句,您的测试使连接处于打开状态)我确信它被称为。还有什么事情我可能做错了吗?您可能希望
在哪个子例程中设置objRS.ActiveConnection=objConn
?XL_DB_relMem()?它对我来说就像预期的一样(Excel 2016)。尝试在两个位置重命名工作表,看看会发生什么。