Χρησιμοποιήστε ένα κλειστό βιβλίο εργασίας ως βάση δεδομένων (DAO) χρησιμοποιώντας VBA στο Microsoft Excel

Πίνακας περιεχομένων

Με τις παρακάτω διαδικασίες μπορείτε να χρησιμοποιήσετε το DAO για να ανακτήσετε ένα σύνολο εγγραφών από ένα κλειστό βιβλίο εργασίας και να διαβάσετε/γράψετε δεδομένα.
Καλέστε τη διαδικασία ως εξής:
GetWorksheetData "C: \ Foldername \ Filename.xls", "SELECT * FROM [SheetName $]", ThisWorkbook.Worksheets (1) .Range ("A3")
Αντικαταστήστε το SheetName με το όνομα του φύλλου εργασίας από το οποίο θέλετε να ανακτήσετε δεδομένα.

Sub GetWorksheetData (strSourceFile As String, strSQL As String, TargetCell As Range) Dim db As DAO.Database, rs As DAO.Recordset, f As Integer, r As Long if TargetCell is Nothing then Exit Sub On Error Resume Next set db = OpenDatabase (strSourceFile, False, True, "Excel 8.0; HDR = Yes;") 'read only' Set db = OpenDatabase (strSourceFile, False, False, "Excel 8.0; HDR = Yes;") 'write' Set db = OpenDatabase ( "C: \ Foldername \ Filename.xls", False, True, _ "Excel 8.0; HDR = Yes;") 'read only' Set db = OpenDatabase ("C: \ Foldername \ Filename.xls", False, False, _ "Excel 8.0; HDR = Yes;") 'write On Error GoTo 0 If db Is Nothing then MsgBox "Can't find the file!", VbExclamation, ThisWorkbook.Name Exit Sub End If "' list works name" For f = 0 Προς db.TableDefs.Count - 1 'Debug.Print db.TableDefs (f). Όνομα' Επόμενο f 'ανοίξτε ένα σύνολο εγγραφών On Error Resume Next Set rs = db.OpenRecordset (strSQL)' Set rs = db.OpenRecordset ( "SELECT * FROM [SheetName $]") '' Set rs = db.OpenRecordset ("SELECT * FROM [SheetName $]" & _ "WHERE [Field Name] LIKE 'A*'") '' Set rs = db.OpenRecordset ("SELECT*FROM [SheetName $]" & _ "WHERE [Field Name] LIKE 'A*' ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ [Όνομα πεδίου]" ) Στο Σφάλμα GoTo 0 Εάν το rs δεν είναι τίποτα τότε MsgBox "Δεν μπορώ να ανοίξω το αρχείο!", VbExclamation, ThisWorkbook.Name db.Close Set db = Nothing Exit Sub End If RS2WS rs, TargetCell rs.Close Set rs = Nothing db. Κλείσιμο Σετ db = Τίποτα Τέλος Sub Sub RS2WS (rs Ως DAO.Recordset, TargetCell As Range) Dim f As Integer, r Όσο μακρύ, c Όσο το rs δεν είναι τίποτα, τότε βγαίνετε από το Sub εάν το TargetCell δεν είναι τίποτα, τότε βγείτε από το Sub με την εφαρμογή. = xlCalculationManual .ScreenUpdating = Λάθος .StatusBar = "Γράψιμο δεδομένων από recordset …" Λήξη με TargetCell.Cells (1, 1) r = .Row c = .Column End With With TargetCell.Parent .Range (.Cells (r, c ), .Cells (.Rows.Count, c + rs.Fields.Count - 1)). Εκκαθάριση κεφαλίδων στήλης εγγραφής «διαγραφής υπάρχοντος περιεχομένου» Για f = 0 Προς rs.Fields.Count - 1 On Error Resume Next .Cells ( r, c + f). Formula = rs.Fields (f). Name On Error GoTo 0 Next f 'write rec ords On Error Resume Next rs.MoveFirst On Error GoTo 0 Do while Not rs.EOF r = r + 1 Για f = 0 To rs.Fields.Count - 1 On Error Resume Next .Cells (r, c + f) .Formula = rs.Fields (f) .Value On Error GoTo 0 Next f rs.MoveNext Loop .Rows (TargetCell.Cells (1, 1) .Row) .Font.Bold = True .Columns ("A: IV"). AutoFit Τέλος με εφαρμογή .StatusBar = Λάθος. Υπολογισμός = xlCalculationAutomatic .ScreenUpdating = Αληθές τέλος με τέλος

Τα παραδείγματα μακροεντολών υποθέτουν ότι το έργο VBA σας έχει προσθέσει μια αναφορά στη βιβλιοθήκη αντικειμένων DAO.
Μπορείτε να το κάνετε αυτό μέσα από το VBE επιλέγοντας το μενού Εργαλεία, Αναφορές και επιλέγοντας Microsoft DAO x.xx Object Library.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave