Pomocí níže uvedených postupů můžete použít ADO k načtení sady záznamů z uzavřeného sešitu a čtení/zápis dat.
Zavolejte postup takto:
GetWorksheetData "C: FoldernameFilename.xls", "SELECT * FROM [SheetName $];", ThisWorkbook.Worksheets (1) .Range ("A3")
Nahraďte SheetName názvem listu, ze kterého chcete načíst data.
Sub GetWorksheetData (strSourceFile jako řetězec, strSQL jako řetězec, TargetCell jako rozsah)
Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer, r As Long
Pokud TargetCell není nic, ukončete sub
Nastavit cn = New ADODB.Connection
Při chybě Pokračovat Další
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
Při chybě GoTo 0
Pokud cn není nic, pak
MsgBox „Nelze najít soubor!“, VbExclamation, ThisWorkbook.Name
Ukončit dílčí
Konec If
“otevřete sadu záznamů
Nastavit rs = New ADODB.Recordset
Při chybě Pokračovat Další
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
'volitelné způsoby načítání sady záznamů.'
'Set rs = cn.Execute ("[A1: Z1000]")' první list
'Set rs = cn.Execute ("[DefinedRangeName]")' any worksheet
Při chybě GoTo 0
Pokud rs není nic, pak
MsgBox „Nelze otevřít soubor!“, VbExclamation, ThisWorkbook.Name
cn. Zavřít
Nastavit cn = nic
Ukončit dílčí
Konec If
RS2WS rs, TargetCell
Volitelný přístup 'TargetCell.CopyFromRecordset rs' pro Excel 2000 nebo novější
Pokud rs.State = adStateOpen Then
r. Zavřít
Konec If
Nastavit rs = nic
cn. Zavřít
Nastavit cn = nic
End Sub
Příklad makra předpokládá, že váš projekt VBA přidal odkaz na knihovnu objektů ADO.
Můžete to udělat z VBE výběrem nabídky Nástroje, Reference a výběrem Microsoft
Knihovna objektů ActiveX Data Objects x.x.