Uporabite zaprt delovni zvezek kot bazo podatkov (ADO) z uporabo VBA v Microsoft Excelu

Anonim

S spodnjimi postopki lahko uporabite ADO za pridobivanje zapisa iz zaprtega delovnega zvezka in branje/pisanje podatkov.
Postopek pokličite tako:

GetWorksheetData "C: FoldernameFilename.xls", "SELECT * FROM [SheetName $];", ThisWorkbook.Worksheets (1) .Range ("A3")
SheetName zamenjajte z imenom delovnega lista, iz katerega želite pridobiti podatke.

Sub GetWorksheetData (strSourceFile kot niz, strSQL kot niz, TargetCell kot obseg)
Dim cn Kot ADODB.Povezava, rs Kot ADODB.Recordset, f Kot celo število, r tako dolgo
Če TargetCell ni nič, zapustite Sub
Nastavite cn = Nova ADODB.povezava
On Napaka Nadaljuj Naprej
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 napaki Pojdi na 0
Če cn ni nič, potem
MsgBox "Datoteke ni mogoče najti!", VbExclamation, ThisWorkbook.Name
Zapri pod
Konec Če

'odpri niz zapisov
Nastavite rs = Nov ADODB.Recordset
On Napaka Nadaljuj Naprej
rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs. Odprite "SELECT * FROM [SheetName $]", _
cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs. Odprite "SELECT * FROM [SheetName $]", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs. Odprite "SELECT * FROM [SheetName $] WHERE [Ime polja] PODOBNO' A%'", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs. Odprite "SELECT * FROM [SheetName $] WHERE [Field Name] PODOBNO' A%'ORDER BY [Field Name]", _
cn, adOpenStatic, adLockOptimistic, adCmdText

'neobvezni načini pridobivanja niza zapisov
'Set rs = cn.Execute ("[A1: Z1000]")' prvi delovni list
'Set rs = cn.Execute ("[DefinedRangeName]")' kateri koli delovni list

Pri napaki Pojdi na 0
Če rs ni nič, potem
MsgBox "Datoteke ni mogoče odpreti!", VbExclamation, ThisWorkbook.Name
cn.Zapri
Nastavi cn = nič
Zapri pod
Konec Če

RS2WS rs, TargetCell
Izbirni pristop »TargetCell.CopyFromRecordset rs« za Excel 2000 ali novejši

Če je rs.State = adStateOpen Potem
rs.Zapri
Konec Če
Nastavite rs = Nič
cn.Zapri
Nastavi cn = nič
End Sub

Primer makra predvideva, da je vaš projekt VBA dodal sklic na knjižnico objektov ADO.
To lahko storite znotraj VBE tako, da izberete meni Orodja, Reference in izberete Microsoft
Knjižnica predmetov ActiveX Data Objects x.x Object.