Я видел, что эта ошибка не нова, но я не могу найти решение.
У меня есть один файл xls, который использует один лист, такой как db, и с ADODB я получаю наборы записей, которые мне нужны .
Код очень прост и работает правильно для каждого протестированного мной p c (5) с WIN7, WIN10, 32 или 64 бит.
Но у меня на P C, это клиент P c, который выдает мне эту ошибку: Run time error '3706': Provider cannot be found
, я проверил версию WIN, офисную версию, они такие же, как и другие P C, 64-битная WIN10, MS Office 32Bit
Для решения этой проблемы требуется больше контроля?!?! спасибо за любые предложения fabrizio
Мой файл xls имеет 2 листа, 1-й с именем "dati" с двумя столбцами (Anno, Pezzi), 2-й с именем "test" пустой, это код:
Sub testConn()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strsql As String
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Set rs = New ADODB.Recordset
#If Win64 Then
cn.Open "Provider=Microsoft.Jet.OLEDB.12.0; Data Source=" & ThisWorkbook.FullName & "; Extended Properties=""Excel 8.0;HDR=Yes;"";"
#Else
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.FullName & "; Extended Properties=""Excel 8.0;HDR=Yes;"";"
#End If
strsql = "SELECT anno, Sum(Pezzi)as Tpz from [dati$] group by anno"
rs.Open strsql, cn, adOpenStatic, adLockReadOnly, adCmdUnspecified
rs.MoveFirst
With Worksheets("test")
.Cells.ClearContents
.Range("A1") = "Anno"
.Range("B1") = "T.Pz"
.Range("A2").CopyFromRecordset rs
.Activate
.Select
End With
End Sub
эти ссылки были добавлены в файл:
Microsoft ActiveX Data Objects 6.1 Library
Microsoft ActiveX Data Recordset 2.8 Library