Izmantojiet slēgtu darbgrāmatu kā datu bāzi (ADO), izmantojot Microsoft Excel VBA

Anonim

Izmantojot tālāk norādītās procedūras, varat izmantot ADO, lai izgūtu ierakstu kopu no slēgtās darbgrāmatas un lasītu/rakstītu datus.
Izsauciet procedūru šādi:

GetWorksheetData "C: FoldernameFilename.xls", "SELECT * FROM [SheetName $];", ThisWorkbook.Worksheets (1). Range ("A3")
Aizstājiet SheetName ar darblapas nosaukumu, no kura vēlaties izgūt datus.

Apakš GetWorksheetData (strSourceFile kā virkne, strSQL kā virkne, TargetCell kā diapazons)
Dim cn Kā ADODB. Savienojums, rs Kā ADODB. Ierakstu kopa, f Kā vesels skaitlis, r Tik garš
Ja TargetCell nav nekas, izejiet no apakšsadaļas
Iestatiet cn = Jauns ADODB. Savienojums
Par kļūdu Atsākt nākamo
cn. Atveriet "DRIVER = {Microsoft Excel draiveris (*.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
Kļūda GoTo 0
Ja cn nav nekas, tad
MsgBox "Nevar atrast failu!", VbExclamation, ThisWorkbook.Name
Iziet no apakšnodaļas
Beigas Ja

'atveriet ierakstu kopu
Iestatīt rs = Jauna ADODB.Recordset
Par kļūdu Atsākt nākamo
rs. Atvērt strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs. Atveriet "SELECT * FROM [SheetName $]", _
cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs. Atveriet "SELECT * FROM [SheetName $]", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Atveriet "SELECT * FROM [SheetName $] WHERE [Lauka nosaukums] LIKE' A%'", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Atveriet "SELECT * FROM [SheetName $] WHERE [Lauka nosaukums] LIKE' A%'ORDER BY [Field Name]", _
cn, adOpenStatic, adLockOptimistic, adCmdText

"izvēles veidi, kā izgūt ierakstus
'Iestatīt rs = cn.Execute ("[A1: Z1000]")' pirmā darblapa
'Iestatīt rs = cn.Execute ("[DefinedRangeName]")' jebkuru darblapu

Kļūda GoTo 0
Ja rs nav nekas, tad
MsgBox "Nevar atvērt failu!", VbExclamation, ThisWorkbook.Name
cn. Aizvērt
Set cn = Nekas
Iziet no apakšnodaļas
Beigas Ja

RS2WS rs, TargetCell
“TargetCell.CopyFromRecordset rs” izvēles pieeja programmai Excel 2000 vai jaunāka versija

Ja rs.State = adStateOpen then
rs. Aizvērt
Beigas Ja
Iestatīt rs = nekas
cn. Aizvērt
Set cn = Nekas
Beigt apakš

Makro piemērā tiek pieņemts, ka jūsu VBA projekts ir pievienojis atsauci uz ADO objektu bibliotēku.
To var izdarīt no VBE, izvēloties izvēlni Rīki, Atsauces un atlasot Microsoft
ActiveX datu objekti x.x objektu bibliotēka.