Uporabite zaprt delovni zvezek kot bazo podatkov (DAO) z uporabo VBA v programu Microsoft Excel

Kazalo

S spodnjimi postopki lahko uporabite DAO za pridobivanje zapisa iz zaprtega delovnega zvezka in branje/pisanje podatkov.
Postopek pokličite tako:
GetWorksheetData "C: \ Foldername \ Filename.xls", "SELECT * FROM [SheetName $]", ThisWorkbook.Worksheets (1) .Range ("A3")
SheetName zamenjajte z imenom delovnega lista, iz katerega želite pridobiti podatke.

Sub GetWorksheetData (strSourceFile As String, strSQL As String, TargetCell As Range) Dim db Kot DAO.Database, rs Kot DAO.Recordset, f Kot celo število, r Tako dolgo, če TargetCell ni nič, potem zapustite podnapako Napaka Nadaljuj Naslednji niz db = OpenDatabase (strSourceFile, False, True, "Excel 8.0; HDR = Da;") 'samo za branje' Set db = OpenDatabase (strSourceFile, False, False, "Excel 8.0; HDR = Yes;") 'write' Set db = OpenDatabase ( "C: \ Ime mape \ Ime datoteke.xls", Napačno, Resnično, _ "Excel 8.0; HDR = Da;") 'samo za branje' Nastavi db = OpenDatabase ("C: \ Ime mape \ Ime datoteke.xls", Napačno, Napačno, _ "Excel 8.0; HDR = Da;") 'napiši Napaka Pojdi na 0 Če db ni nič, potem MsgBox "Ne najdem datoteke!", VbExclamation, ThisWorkbook.Name Izhod iz podkoncev Če' 'imena delovnih listov' 'za f = 0 Za db.TableDefs.Count - 1 'Debug.Print db.TableDefs (f). Ime' Next f 'odpre niz zapisov On Error Resume Next Set rs = db.OpenRecordset (strSQL)' Set rs = db.OpenRecordset ( "SELECT * FROM [SheetName $]") 'Set rs = db.OpenRecordset ("SELECT * FROM [SheetName $]" & _ "KJE [Ime polja] LIKE" A*"") 'Nastavite rs = db.OpenRecordset ("SELECT*FROM [SheetName $]" & _ "WHERE [Field Name] LIKE' A*'ORDER BY [Field Name]" ) On Error GoTo 0 Če rs ni nič, potem MsgBox "Ne morem odpreti datoteke!", VbExclamation, ThisWorkbook.Name db.Close Set db = Nothing Exit Sub End Če RS2WS rs, TargetCell rs.Close Set rs = Nič db. Zapri Nastavi db = Nič Končaj Sub Sub Sub RS2WS (rs Kot DAO.Recordset, TargetCell As Range) Dim f As Integer, r As Long, c As Long Če rs ni nič, potem zapustite Sub, če TargetCell ni nič, potem zapustite Sub z aplikacijo. = xlCalculationManual .ScreenUpdating = false. ). r, c + f). Formula = rs. Polja (f). Ime pri napaki Pojdi 0 Naprej f 'zapiši rec ords On Error Resume Next 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. Celice (r, c + f). = rs.Fields (f) .Vrednost pri napaki Pojdi na 0 Naprej f rs.MoveNext Loop .Rows (TargetCell.Cells (1, 1) .Row). Font.Bold = True .Columns ("A: IV"). AutoFit Končaj z aplikacijo .StatusBar = False .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub

Primeri makrov predpostavljajo, da je vaš projekt VBA dodal sklic na knjižnico objektov DAO.
To lahko storite znotraj VBE tako, da izberete meni Orodja, Reference in izberete Knjižnico objektov Microsoft DAO x.xx.

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave