Käytä suljettua työkirjaa tietokannana (DAO) käyttämällä VBA: ta Microsoft Excelissä

Sisällysluettelo

Alla olevien ohjeiden avulla voit noutaa tietuejoukon suljetusta työkirjasta DAO: n avulla ja lukea/kirjoittaa tietoja.
Kutsu menettely seuraavasti:
GetWorksheetData "C: \ Foldname \ Filename.xls", "SELECT * FROM [SheetName $]", ThisWorkbook.Worksheets (1) .Range ("A3")
Korvaa SheetName laskentataulukon nimellä, josta haluat hakea tietoja.

Sub GetWorksheetData (strSourceFile As String, strSQL As String, TargetCell As Range) Dim db DAO.Database, rs As DAO.Recordset, f Kuten Integer, r Niin kauan jos TargetCell ei ole mitään Lopeta osa Virhe Jatka Seuraava Aseta db = OpenDatabase (strSourceFile, False, True, "Excel 8.0; HDR = Kyllä;") 'vain luku' Aseta db = OpenDatabase (strSourceFile, False, False, "Excel 8.0; HDR = Kyllä;") 'kirjoittaa' Aseta db = OpenDatabase ( "C: \ Foldname \ Filename.xls", False, True, _ "Excel 8.0; HDR = Yes;") 'vain luku' Aseta db = OpenDatabase ("C: \ Foldname \ Filename.xls", False, False, _ "Excel 8.0; HDR = Kyllä;") 'Kirjoita Virhe GoTo 0 Jos db ei ole mitään, niin MsgBox "Tiedostoa ei löydy!", VbExclamation, ThisWorkbook.Name Exit Sub End If' 'list työkirjan nimet' For f = 0 Kohteeseen db.TableDefs.Count - 1 'Debug.Print db.TableDefs (f) .Nimi' Seuraava f 'avaa tietuejoukko Virhe Jatka Seuraava sarja rs = db.OpenRecordset (strSQL)' Set rs = db.OpenRecordset ( "SELECT * FROM [SheetName $]") 'Aseta 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]" ) Virhe GoTo 0 Jos rs ei ole mitään Sitten MsgBox "Tiedostoa ei voi avata!", VbExclamation, ThisWorkbook.Name db.Close Set db = Nothing Exit Sub End If RS2WS rs, TargetCell rs.Close Set rs = Nothing db. Close Set db = Nothing End Sub Sub RS2WS (rs Kuten DAO.Recordset, TargetCell As Range) Dim f kokonaislukuna, r niin kauan, c niin kauan, jos rs ei ole mitään, sulje sitten Sub, jos TargetCell is nothing then Exit sub with application. = xlCalculationManual .ScreenUpdating = False .StatusBar = "Tietojen kirjoittaminen tietuejoukosta…" Päättyy TargetCell.Cells (1, 1) r = .Rivi c = .Column End With With TargetCell.Parent .Range (.Cells (r, c ). r, c + f). Kaava = rs. Kentät (f). Nimi Päällä Virhe GoTo 0 Seuraava f 'kirjoittaa rec ords On Error Jatka seuraava rs.MoveFirst On Error GoTo 0 Do while Not rs.EOF r = r + 1 For f = 0 To rs.Fields.Count - 1 On Error Jatka seuraavaksi .Solut (r, c + f). = rs.Kentät (f) .Arvo päällä Virhe GoTo 0 Seuraava f rs.MoveNext Loop .Rows (TargetCell.Cells (1, 1) .Row) .Font.Bold = True .Columns ("A: IV"). AutoFit Lopeta sovelluksella .StatusBar = Väärä.

Makroesimerkit olettaa, että VBA -projektisi on lisännyt viittauksen DAO -objektikirjastoon.
Voit tehdä tämän VBE: stä valitsemalla valikon Työkalut, viitteet ja valitsemalla Microsoft DAO x.xx Object Library.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave