Cu procedurile de mai jos puteți utiliza ADO pentru a extrage un set de înregistrări dintr-un registru de lucru închis și pentru a citi / scrie date.
Apelați procedura astfel:
GetWorksheetData "C: FoldernameFilename.xls", "SELECT * FROM [SheetName $];", ThisWorkbook.Worksheets (1) .Range ("A3")
Înlocuiți SheetName cu numele foii de lucru din care doriți să preluați date.
Sub GetWorksheetData (strSourceFile As String, strSQL As String, TargetCell As Range)
Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer, r As Long
Dacă TargetCell nu este nimic, ieșiți din Sub
Setați cn = ADODB nou. Conectare
La eroare Reluați în continuare
cn.Open "DRIVER = {Driver Microsoft Excel (* .xls)}; DriverId = 790; ReadOnly = True;" & _
"DBQ =" & strSourceFile & ";"
'DriverId = 790: Excel 97/2000
„DriverId = 22: Excel 5/95
„DriverId = 278: Excel 4
'DriverId = 534: Excel 3
La eroare GoTo 0
Dacă cn nu este nimic atunci
MsgBox „Nu se poate găsi fișierul!”, VbExclamation, ThisWorkbook.Name
Ieșiți din Sub
End If
'deschide un set de înregistrări
Set rs = New ADODB.Recordset
La eroare Reluați în continuare
rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Open "SELECT * FROM [SheetName $]", _
cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Open "SELECT * FROM [SheetName $]", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Open "SELECT * FROM [SheetName $] WHERE [Field Name] LIKE' A% '", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Open "SELECT * FROM [SheetName $] WHERE [Field Name] LIKE' A% 'ORDER BY [Field Name]", _
cn, adOpenStatic, adLockOptimistic, adCmdText
„modalități opționale de recuperare a unui set de înregistrări
'Setați rs = cn.Execute ("[A1: Z1000]")' prima foaie de lucru
'Setați rs = cn.Execute ("[DefinedRangeName]")' orice foaie de lucru
La eroare GoTo 0
If rs Is Nothing Atunci
MsgBox „Nu se poate deschide fișierul!”, VbExclamation, ThisWorkbook.Name
cn.Închide
Set cn = Nimic
Ieșiți din Sub
End If
RS2WS rs, TargetCell
Abordarea opțională „TargetCell.CopyFromRecordset rs” pentru Excel 2000 sau o versiune ulterioară
Dacă rs.State = adStateOpen Then
rs. Închide
End If
Set rs = Nimic
cn.Închide
Set cn = Nimic
Sfârșitul Sub
Exemplul macro presupune că proiectul dvs. VBA a adăugat o referință la biblioteca de obiecte ADO.
Puteți face acest lucru din VBE selectând meniul Instrumente, Referințe și selectând Microsoft
ActiveX Data Objects x.x Library de obiecte.