Atlikdami toliau nurodytas procedūras, galite naudoti ADO, norėdami nuskaityti įrašų rinkinį iš uždarytos darbaknygės ir skaityti/rašyti duomenis.
Skambinkite procedūrą taip:
GetWorksheetData "C: FoldnameFilename.xls", "SELECT * FROM [SheetName $];", ThisWorkbook.Worksheets (1) .Range ("A3")
Pakeiskite „SheetName“ darbalapio pavadinimu, iš kurio norite gauti duomenis.
Antrinis „GetWorksheetData“ (strSourceFile As String, strSQL As String, TargetCell As Range)
Dim cn Kaip ADODB. Ryšys, rs Kaip ADODB. Įrašų rinkinys, f Kaip sveikasis skaičius, r Kaip ilgas
Jei „TargetCell“ yra niekas, išeikite iš „Sub“
Nustatykite cn = New ADODB.Connection
Dėl klaidos Tęsti toliau
cn.Open "DRIVER = {Microsoft Excel Driver (*.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 “
Klaida „GoTo 0“
Jei cn nieko, tada
„MsgBox“ Negaliu rasti failo! “, VbExclamation, ThisWorkbook.Name
Išeiti iš Sub
Pabaiga Jei
“atidarykite įrašų rinkinį
Nustatykite rs = Naujas ADODB.Recordset
Dėl klaidos Tęsti toliau
rs. Atviras strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs. Atidarykite „SELECT * FROM [SheetName $]“, _
cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs. Atidarykite „SELECT * FROM [SheetName $]“, _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Atidarykite "SELECT * FROM [SheetName $] WHERE [Lauko pavadinimas] PATINKA' A%'", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Atidarykite „SELECT * FROM [SheetName $] WHERE [Lauko pavadinimas] PATINKA„ A%“UŽSAKYTI [Lauko pavadinimas]“, _
cn, adOpenStatic, adLockOptimistic, adCmdText
“pasirenkami įrašų rinkinio gavimo būdai
'Nustatykite rs = cn.Execute ("[A1: Z1000]")' pirmasis darbalapis
'Nustatykite rs = cn.Execute ("[DefinedRangeName]")' bet kurį darbalapį
Klaida „GoTo 0“
Jei RS nieko nėra
„MsgBox“ Nepavyksta atidaryti failo! “, VbExclamation, ThisWorkbook.Name
cn. Uždaryti
Nustatykite cn = nieko
Išeiti iš Sub
Pabaiga Jei
RS2WS rs, TargetCell
„TargetCell.CopyFromRecordset rs“ pasirenkamas metodas, skirtas „Excel 2000“ ar naujesnei versijai
Jei rs.State = adStateOpen Tada
rs. Uždaryti
Pabaiga Jei
Nustatykite rs = nieko
cn. Uždaryti
Nustatykite cn = nieko
Pabaiga Sub
Makrokomandos pavyzdyje daroma prielaida, kad jūsų VBA projektas pridėjo nuorodą į ADO objektų biblioteką.
Tai galite padaryti iš VBE, pasirinkę meniu Įrankiai, Nuorodos ir pasirinkę „Microsoft“
„ActiveX“ duomenų objektai x.x objektų biblioteka.