Kasutage suletud töövihikut andmebaasina (DAO), kasutades Microsoft Excelis VBA -d

Anonim

Alltoodud protseduuride abil saate DAO abil suletud töövihikust kirjeid hankida ja andmeid lugeda/kirjutada.
Helistage protseduurile järgmiselt:
GetWorksheetData "C: \ Foldname \ Filename.xls", "SELECT * FROM [SheetName $]", ThisWorkbook.Worksheets (1) .Range ("A3")
Asendage SheetName töölehe nimega, kust soovite andmeid alla laadida.

Alam GetWorksheetData (strSourceFile kui string, strSQL kui string, TargetCell kui vahemik) Dim db kui DAO. Andmebaas, RS kui DAO.Recordset, f Nagu täisarv, r Nii kaua, kui TargetCell pole midagi, siis väljuge veast Jätka järgmine komplekt db = OpenDatabase (strSourceFile, False, True, "Excel 8.0; HDR = Jah;") "kirjutuskaitstud "C: \ kaustanimi \ failinimi.xls", vale, tõene, _ "Excel 8.0; HDR = Jah;") 'kirjutuskaitstud' Määra db = OpenDatabase ("C: \ kaustanimi \ failinimi.xls", vale, vale, _ "Excel 8.0; HDR = Jah;") 'kirjutage veale GoTo 0 Kui db pole midagi, siis MsgBox "Faili ei leia!", VbExclamation, ThisWorkbook.Name Exit Sub end End if' 'list worksheet names' For f = 0 kuni db.TableDefs.Count - 1 'Silumine.Prindi db.TableDefs (f). Nimi' Järgmine f 'avab kirjete komplekti On Error Resume Next Set rs = db.OpenRecordset (strSQL)' Set rs = db.OpenRecordset ( "SELECT * FROM [SheetName $]") 'Määra rs = db.OpenRecordset ("SELECT * FROM [SheetName $]" & _ "WHERE [Field Name] LIKE 'A*'") 'Set rs = db.OpenRecordset ("SELECT*FROM [SheetName $]" & _ "WHERE [Field Name] LIKE' A*'ORDER BY [Field Name]" ) Viga GoTo 0 Kui rs pole midagi, siis MsgBox "Faili ei saa avada!", VbExclamation, ThisWorkbook.Name db.Close Set db = Nothing Exit Sub End If RS2WS rs, TargetCell rs.Close Set rs = Nothing db. Sulge Komplekt db = Nothing End Sub Sub RS2WS (rs As DAO.Recordset, TargetCell As Range) Dim f nagu täisarv, r nii pikk, c nii kaua, kui rs pole midagi, siis välju alamest, kui TargetCell pole midagi, siis välju rakendusest. = xlCalculationManual .ScreenUpdating = False .StatusBar = "Andmete kirjutamine kirjekomplektist …" Lõpeta TargetCell.Cells'iga (1, 1) r = .Rida c = .Veel lõpetab koos TargetCell.Parent .Range (.Cells (r, c ). r, c + f). Vormel = rs. Väljad (f). Nimi sees Viga GoTo 0 Järgmine f 'kirjutada rec Ords On Error Jätka järgmist rs.MoveFirst On Error GoTo 0 Do while Not rs.EOF r = r + 1 For f = 0 To rs.Fields.Count - 1 On Error Resume Next. Lahtrid (r, c + f). = rs.Väljad (f) .Väärtus Viga GoTo 0 Järgmine f rs.MoveNext Loop .Rows (TargetCell.Cells (1, 1) .Row) .Font.Bold = True .Columns ("A: IV"). AutoFit Lõpeta rakendusega .StatusBar = False .Calculation = xlCalculationAutomatic .ScreenUpdating = Tõeline lõpp lõpuosaga

Makronäited eeldavad, et teie VBA projekt on lisanud viite DAO objektiteekile.
Seda saate teha VBE -s, valides menüü Tools, References ja Microsoft DAO x.xx Object Library.