Naudokite uždarą darbaknygę kaip duomenų bazę (DAO) naudodami „Microsoft Excel“ VBA

Turinys

Atlikdami toliau nurodytas procedūras, galite naudoti DAO, norėdami nuskaityti įrašų rinkinį iš uždarytos darbaknygės ir skaityti/rašyti duomenis.
Skambinkite procedūrą taip:
GetWorksheetData "C: \ Foldname \ Filename.xls", "SELECT * FROM [SheetName $]", ThisWorkbook.Worksheets (1) .Range ("A3")
Pakeiskite „SheetName“ darbalapio pavadinimu, iš kurio norite gauti duomenis.

Sub GetWorksheetData (strSourceFile As String, strSQL As String, TargetCell As Range) Dim db Kaip DAO.Database, rs As DAO.Recordset, f As Integer, r Kaip ilgai, jei TargetCell yra niekas, tada Išeikite iš klaidos Tęsti Toliau Nustatykite db = OpenDatabase (strSourceFile, False, True, "Excel 8.0; HDR = Taip;") 'tik skaityti' Set db = OpenDatabase (strSourceFile, False, False, "Excel 8.0; HDR = Taip;") 'rašykite' Set db = OpenDatabase ( "C: \ Foldname \ Filename.xls", False, True, _ "Excel 8.0; HDR = Yes;") 'tik skaityti' Set db = OpenDatabase ("C: \ Foldname \ Filename.xls", False, False, _ "Excel 8.0; HDR = Taip;") 'rašyti apie klaidą GoTo 0 Jei db nieko nėra, tada "MsgBox" "Negaliu rasti failo!", VbExclamation, ThisWorkbook.Name = 0 Į db.TableDefs.Count - 1 'Derinti. Spausdinti db.TableDefs (f). Pavadinimas „Kitas f“ atidaryti įrašų rinkinį Apie klaidą Tęsti kitą rinkinį rs = db.OpenRecordset (strSQL) „Nustatyti rs = db.OpenRecordset ( "SELECT * FROM [SheetName $]") 'Nustatykite rs = db.OpenRecordset ("SELECT * FROM [SheetName $]" & _ "WHERE [Field Name] LIKE 'A*'") 'Set rs = db.OpenRecordset ("SELECT*FROM [SheetName $]" & _ "WHERE [Lauko pavadinimas] PATIKIMAS" A*"UŽSAKYMAS [Lauko pavadinimas]" ) Apie klaidą „GoTo 0“, jei rs yra niekas, tada „MsgBox“ negaliu atidaryti failo! “, VbExclamation, ThisWorkbook.Name db.Close Set db = Nieko Išeiti iš pabaigos, jei RS2WS rs, TargetCell rs.Close Set rs = Nothing db. Uždaryti rinkinį db = Nothing End Sub Sub RS2WS (rs As DAO.Recordset, TargetCell As Range) Dim f As Integer, r Kaip ilgai, c Tiek ilgai, jei rs yra nieko, tada išeikite iš antrinės dalies, jei „TargetCell“ yra nieko, tada išeikite iš dalies su programa. = xlCalculationManual .ScreenUpdating = False .StatusBar = "Duomenų rašymas iš įrašų rinkinio …" Pabaiga su TargetCell.Cells (1, 1) r = .Row c = .Column End With With TargetCell.Parent .Range (.Ląstelės (r, c ), .Ląstelės (.Rows.Count, c + rs.Fields.Count - 1)). Išvalyti „išvalyti esamą turinį“ rašyti stulpelių antraštes F = 0 Iki rs.Fields.Count - 1 On Error Resume Next .Ląstelės ( r, c + f). Formulė = rs. Laukai (f). Pavadinimas įjungta Klaida GoTo 0 Kitas f 'rašyti rec ords On Error Resume Next rs.MoveFirst On Error GoTo 0 Do do Not rs.EOF r = r + 1 For f = 0 To rs.Fields.Count - 1 On Error Resume Next .Ląstelės (r, c + f). = rs.Fields (f). Value On Error GoTo 0 Next f rs.MoveNext Loop .Rows (TargetCell.Cells (1, 1) .Row) .Font.Bold = Tiesa. Stulpeliai ("A: IV"). AutoFit Baigti taikant .StatusBar = False .Calculation = xlCalculationAutomatic .ScreenUpdating = Tikroji pabaiga su pabaiga

Makro pavyzdžiai daro prielaidą, kad jūsų VBA projektas pridėjo nuorodą į DAO objektų biblioteką.
Tai galite padaryti iš VBE, pasirinkę meniu Įrankiai, Nuorodos ir pasirinkę „Microsoft DAO x.xx Object Library“.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave