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

Anonim

Izmantojot tālāk norādītās procedūras, varat izmantot DAO, lai izgūtu ierakstu kopu no slēgtās darbgrāmatas un lasītu/rakstītu datus.
Izsauciet procedūru šādi:
GetWorksheetData "C: \ Foldername \ Filename.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 db kā DAO.Database, rs Kā DAO.Recordset, f Kā vesels skaitlis, r Cik ilgi, ja TargetCell nav nekas, tad iziet no kļūdas Atsākt nākamo kopu db = OpenDatabase (strSourceFile, False, True, "Excel 8.0; HDR = Jā;") 'tikai lasāms' Set db = OpenDatabase (strSourceFile, False, False, "Excel 8.0; HDR = Jā;") 'rakstīt' Set db = OpenDatabase ( "C: \ Foldername \ Filename.xls", False, True, _ "Excel 8.0; HDR = Yes;") 'tikai lasāms' Set db = OpenDatabase ("C: \ Foldname \ Filename.xls", False, False, _ "Excel 8.0; HDR = Jā;") 'rakstīt uz kļūdas GoTo 0 Ja db nav nekas, tad MsgBox "Nevar atrast failu!", VbExclamation, ThisWorkbook.Name Exit Sub End If' 'list worksheet names' For f = 0 Uz db.TableDefs.Count - 1 'atkļūdošana. Drukāt db.TableDefs (f). Nosaukums' Nākamais f 'atver ierakstu kopu Par kļūdu Atsākt nākamo kopu rs = db.OpenRecordset (strSQL)' Set rs = db.OpenRecordset ( "SELECT * FROM [SheetName $]") 'Iestatiet 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]" ) Par kļūdu GoTo 0 Ja rs nav nekas, tad MsgBox "Nevar atvērt failu!", VbExclamation, ThisWorkbook.Name db.Close Set db = Nothing Exit Sub End If RS2WS rs, TargetCell rs.Close Set rs = Nothing db. Aizvērt kopu db = Nothing End Sub Sub RS2WS (rs kā DAO.Recordset, TargetCell As Range) Dim f kā vesels skaitlis, r tik garš, c tik ilgi, ja rs nav nekas, tad iziet no apakšpunkta, ja TargetCell nekas nav, tad iziet no apakšdaļas ar lietojumprogrammu. Aprēķins = xlCalculationManual .ScreenUpdating = False .StatusBar = "Datu ierakstīšana no ierakstu kopas …" Beidzas ar TargetCell.Cells (1, 1) r = .Rinda c =. Kolonna Beigt ar Ar TargetCell.Parent .Range (.Cells (r, c ), .Cells (.Rows.Count, c + rs.Fields.Count - 1)). Notīrīt 'notīrīt esošo saturu' rakstīt kolonnu galvenes Attiecībā uz f = 0 To rs.Fields.Count - 1 On Error Resume Next .Cells ( r, c + f). Formula = rs. Lauki (f). Vārds ieslēgts Kļūda GoTo 0 Nākamais f 'rakstīt rec rīkojumi par kļūdu Atsākt nākamo rs.MoveFirst On Error GoTo 0 Do while Not rs.EOF r = r + 1 Attiecībā uz f = 0 līdz rs.Fields.Count - 1 On Error Resume Next .Cells (r, c + f). = rs.Fields (f). Vērtība ieslēgta Kļūda GoTo 0 Next f rs.MoveNext Loop .Rows (TargetCell.Cells (1, 1) .Row) .Font.Bold = True .Columns ("A: IV"). AutoFit Beigt ar lietojumprogrammu.

Makro piemēros tiek pieņemts, ka jūsu VBA projekts ir pievienojis atsauci uz DAO objektu bibliotēku.
To var izdarīt no VBE, izvēloties izvēlni Rīki, atsauces un atlasot Microsoft DAO x.xx Object Library.