Koristite zatvorenu radnu knjigu kao bazu podataka (DAO) koristeći VBA u programu Microsoft Excel

Sadržaj

Pomoću dolje navedenih postupaka možete koristiti DAO za dohvaćanje skupa zapisa iz zatvorene radne knjige i čitanje/pisanje podataka.
Postupak nazovite ovako:
GetWorksheetData "C: \ Foldername \ Filename.xls", "SELECT * FROM [SheetName $]", ThisWorkbook.Worksheets (1) .Range ("A3")
Zamijenite SheetName imenom radnog lista iz kojeg želite dohvatiti podatke.

Sub GetWorksheetData (strSourceFile As String, strSQL As String, TargetCell As Range) Dim db Kao DAO.Database, rs Kao DAO.Recordset, f Kao cijeli broj, r Sve dok TargetCell nije ništa Zatim izađite iz Sub On Error Nastavi Sljedeći skup db = OpenDatabase (strSourceFile, False, True, "Excel 8.0; HDR = Da;") 'samo za čitanje' Postavi db = OpenDatabase (strSourceFile, False, False, "Excel 8.0; HDR = Da;") 'write' Set db = OpenDatabase ( "C: \ Ime mape \ Ime datoteke.xls", Netačno, Istina, _ "Excel 8.0; HDR = Da;") 'samo za čitanje' Postavi db = OpenDatabase ("C: \ Ime mape \ Naziv datoteke.xls", Netačno, Netačno, _ "Excel 8.0; HDR = Da;") 'upišite pri pogrešci Idi na 0 Ako db nije ništa Tada MsgBox "Ne mogu pronaći datoteku!", VbExclamation, ThisWorkbook.Name Izađi Podkraj Ako "" imena radnih listova "Za f = 0 To db.TableDefs.Count - 1 'Debug.Print db.TableDefs (f) .Naziv' Next f 'otvori skup zapisa On Error Resume Next Set rs = db.OpenRecordset (strSQL)' Set rs = db.OpenRecordset ( "SELECT * FROM [SheetName $]") 'Postavi rs = db.OpenRecordset ("SELECT * FROM [SheetName $]" & _ "WHERE [Naziv polja] KAO 'A*'") 'Postavite rs = db.OpenRecordset ("SELECT*FROM [SheetName $]" & _ "WHERE [Name Field] LIKE' A*'ORDER BY [Field Name]" ) On Error GoTo 0 If rs Is Nothing then MsgBox "Can't open the file!", VbExclamation, ThisWorkbook.Name db.Close Set db = Nothing Exit Sub End If RS2WS rs, TargetCell rs.Close Set rs = Ništa db. Zatvori Postavi db = Ništa Kraj Sub Sub RS2WS (rs Kao DAO.Recordset, TargetCell kao raspon) Dim f Kao cijeli broj, r Kao dugo, c Sve dok rs nije ništa Zatim izađite iz Sub -a ako TargetCell nije ništa Zatim izađite iz Sub -a s aplikacijom. = xlCalculationManual .ScreenUpdating = False .StatusBar = "Zapisivanje podataka iz skupa zapisa …" Završi s TargetCell.Cells (1, 1) r = .Row c = .Stopac Završi s TargetCell.Parent .Range (. Ćelije (r, c ). r, c + f) .Formula = rs.Polja (f). Naziv Pogreška Idi na 0 Sljedeće f 'pisanje 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 .Cells (r, c + f) .Formula = rs.Fields (f) .Vrijednost On Error Idi na 0 Sljedeći f rs.MoveNext Loop. Redovi (TargetCell.Cells (1, 1) .Row). Font.Bold = True. Stupci ("A: IV"). Automatsko prilagođavanje Završi s primjenom .StatusBar = Netačno. Izračun = xlCalculationAutomatski .ScreenUpdating = Istinski kraj s završnom podlogom

Primjeri makroa pretpostavljaju da je vaš VBA projekt dodao referencu u biblioteku objekata DAO.
To možete učiniti unutar VBE -a odabirom izbornika Alati, Reference i odabirom Microsoft DAO x.xx Knjižnica objekata.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave