Použite uzavretý zošit ako databázu (ADO) pomocou jazyka VBA v programe Microsoft Excel

Anonim

S nižšie uvedenými postupmi môžete použiť ADO na získanie sady záznamov z uzavretého zošita a čítanie/zápis údajov.
Zavolajte postup takto:

GetWorksheetData "C: FoldernameFilename.xls", "SELECT * FROM [SheetName $];", ThisWorkbook.Worksheets (1) .Range ("A3")
Nahraďte SheetName názvom pracovného hárka, z ktorého chcete načítať údaje.

Sub GetWorksheetData (strSourceFile ako reťazec, strSQL ako reťazec, TargetCell ako rozsah)
Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer, r As Long
Ak TargetCell nie je nič, ukončite podponuku
Nastaviť cn = Nové ADODB.Connection
Pri chybe Pokračovať Ďalej
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
Pri chybe GoTo 0
Ak cn nie je nič, potom
MsgBox „Nemôžem nájsť súbor!“, VbExclamation, ThisWorkbook.Name
Ukončiť sub
Koniec Ak

„otvorte sadu záznamov
Nastaviť rs = New ADODB.Recordset
Pri chybe Pokračovať Ďalej
rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Otvorte "SELECT * FROM [SheetName $]", _
cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Otvorte "SELECT * FROM [SheetName $]", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Open "SELECT * FROM [SheetName $] WHERE [Field Name] LIKE' A%'", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Otvorte "SELECT * FROM [SheetName $] WHERE [Field Name] LIKE' A%'ORDER BY [Field Name]", _
cn, adOpenStatic, adLockOptimistic, adCmdText

„voliteľné spôsoby získavania sady záznamov
Prvý pracovný list „Nastaviť rs = cn.Execute (" [A1: Z1000] ")"
'Set rs = cn.Execute ("[DefinedRangeName]")' any worksheet

Pri chybe GoTo 0
Ak rs nie je nič, potom
MsgBox „Nemôžem otvoriť súbor!“, VbExclamation, ThisWorkbook.Name
cn.Zavrieť
Nastaviť cn = nič
Ukončiť sub
Koniec Ak

RS2WS rs, TargetCell
Voliteľný prístup „TargetCell.CopyFromRecordset rs“ pre Excel 2000 alebo novší

Ak rs.State = adStateOtvorte potom
rs.Zavrieť
Koniec Ak
Nastaviť rs = nič
cn.Zavrieť
Nastaviť cn = nič
Koniec pod

Príklad makra predpokladá, že váš projekt VBA pridal odkaz na knižnicu objektov ADO.
Môžete to urobiť z VBE tak, že vyberiete ponuku Nástroje, Referencie a vyberiete položku Microsoft
Knižnica objektov ActiveX Data Objects x.x.