Με τις παρακάτω διαδικασίες μπορείτε να χρησιμοποιήσετε το ADO για να ανακτήσετε ένα σύνολο εγγραφών από ένα κλειστό βιβλίο εργασίας και να διαβάσετε/γράψετε δεδομένα.
Καλέστε τη διαδικασία ως εξής:
GetWorksheetData "C: FoldernameFilename.xls", "SELECT * FROM [SheetName $];", ThisWorkbook.Worksheets (1) .Range ("A3")
Αντικαταστήστε το SheetName με το όνομα του φύλλου εργασίας από το οποίο θέλετε να ανακτήσετε δεδομένα.
Sub GetWorksheetData (strSourceFile As String, strSQL As String, TargetCell As Range)
Dim cn Ως ADODB. Σύνδεση, rs Ως ADODB. Εγγραφή, f Ως ακέραιος, r Όσο καιρό
Εάν το TargetCell δεν είναι τίποτα, τότε βγείτε από το υπο
Ορισμός cn = New ADODB.Connection
Στο Σφάλμα Συνέχιση Επόμενο
cn.Open "DRIVER = {Microsoft Excel Driver (*.xls)}; DriverId = 790; ReadOnly = True;" & _
"DBQ =" & strSourceFile & ";"
'DriverId = 790: Excel 97/2000
'DriverId = 22: Excel 5/95
'DriverId = 278: Excel 4
'DriverId = 534: Excel 3
Σφάλμα GoTo 0
Αν το cn δεν είναι τίποτα τότε
MsgBox "Δεν μπορώ να βρω το αρχείο!", VbExclamation, ThisWorkbook.Name
Έξοδος Sub
Τέλος εαν
«άνοιξε ένα ηχοσύστημα
Ρύθμιση rs = Νέο ADODB.Recordset
Στο Σφάλμα Συνέχιση Επόμενο
rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Open "SELECT * FROM [SheetName $]", _
cn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Open "SELECT * FROM [SheetName $]", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Open "SELECT * FROM [SheetName $] WHERE [Field Name] LIKE' A%'", _
cn, adOpenStatic, adLockOptimistic, adCmdText
'rs.Open "SELECT * FROM [SheetName $] WHERE [Field Name] LIKE' A%'ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ [Όνομα πεδίου]", _
cn, adOpenStatic, adLockOptimistic, adCmdText
«προαιρετικοί τρόποι ανάκτησης ενός σετ εγγραφής
'Ορισμός rs = cn. Εκτέλεση ("[A1: Z1000]")' πρώτου φύλλου εργασίας
'Ορισμός rs = cn. Εκτέλεση ("[DefinedRangeName]")' οποιουδήποτε φύλλου εργασίας
Σφάλμα GoTo 0
Αν το rs δεν είναι τίποτα τότε
MsgBox "Δεν μπορώ να ανοίξω το αρχείο!", VbExclamation, ThisWorkbook.Name
cn. Κλείσιμο
Ορισμός cn = Τίποτα
Έξοδος Sub
Τέλος εαν
RS2WS rs, TargetCell
Προαιρετική προσέγγιση "TargetCell.CopyFromRecordset rs" για Excel 2000 ή νεότερη έκδοση
Εάν rs.State = adStateOpen Τότε
rs. Κλείσιμο
Τέλος εαν
Ρύθμιση rs = Τίποτα
cn. Κλείσιμο
Ορισμός cn = Τίποτα
Τέλος υπο
Το παράδειγμα μακροεντολής υποθέτει ότι το έργο VBA σας έχει προσθέσει μια αναφορά στη βιβλιοθήκη αντικειμένων ADO.
Μπορείτε να το κάνετε αυτό μέσα από το VBE επιλέγοντας το μενού Εργαλεία, Αναφορές και επιλέγοντας τη Microsoft
Βιβλιοθήκη αντικειμένων ActiveX Data Objects x.x.