0

我尝试连接到一个 excel 数据库(我知道它不是完美的数据库,但我不能使用访问,但我必须使用 excel 所以......)一切正常,直到出现:objRecordset.Open

我得到一个错误,我承认我不知道如何解决它

这是代码

Sub macromacro()
'On Error Resume Next

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1

'***** Creation de la connection *****
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & ThisWorkbook.Path & "\StatsLyon.xlsm;" _
    & "Extended Properties=""Excel 8.0;HDR=Yes;"";"


'***** Requête SQL *****
objRecordset.Open

Query = "Select SUM(NbCompteurElec) AS NombreTotal FROM [Feuil1$] ," _
& "objConnection, adOpenStatic, adLockOptimistic, adCmdText"

Feuil5.Cells(1, 3).Value = "NombreTotal"
Feuil5.Cells(1, 4).Value = objRecordset.Fields(NombreTotal).Value

objConnection.Close
Set objConnection = Nothing


End Sub
4

1 回答 1

0

您需要将 ACE 与 *.xlsm 和 *.xlsx 一起使用:

objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & ThisWorkbook.Path & "\StatsLyon.xlsm;" _
    & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

您可能还想使用

Extended Properties="Excel 12.0 Xml;HDR=YES";

有关详细信息,请参阅http://www.connectionstrings.com/excel-2007

然后:

objRecordset.Open "Select SUM(NbCompteurElec) AS NombreTotal FROM [Feuil1$]", _
objConnection, adOpenStatic, adLockOptimistic

编辑重新评论

sSQL = "Select SUM(NbCompteurElec) AS NombreTotal FROM [Feuil1$] " _
     & "WHERE [DateMad] Between #" _
     & Format(date_deb,"yyyy/mm/dd") _
     & "# And #" & Format(date_fin,"yyyy/mm/dd") & "#"

objRecordset.Open sSQL, objConnection, adOpenStatic, adLockOptimistic

日期的分隔符是 #
最好将日期格式化为年 (yyyy)、月、日,因为它永远不会模棱两可。

于 2012-10-30T13:43:22.987 回答