Εισαγωγή δεδομένων από αρχείο κειμένου (ADO) χρησιμοποιώντας VBA στο Microsoft Excel

Anonim

Η παρακάτω διαδικασία μπορεί να χρησιμοποιηθεί για να λάβετε ένα σύνολο εγγραφών ADO από ένα αρχείο κειμένου και να συμπληρώσετε το αποτέλεσμα σε ένα φύλλο εργασίας.

Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'παράδειγμα: GetTextFileData "SELECT * FROM filename.txt", _ "C: \ FolderName", Range ("A3") "παράδειγμα: GetTextFileData" SELECT filename.txt WHERE fieldname = 'κριτήρια' ", _" C: \ FolderName ", Range (" A3 ") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer If rngTargetCell is Nothing then Exit Sub Set cn = New ADODB.Connection On Error Resume Next cn.Open "Driver = {Microsoft Text Driver ( *.txt; *.csv)};" & _ "Dbq =" & strFolder & ";" & _ "Extensions = asc, csv, tab, txt;" On Error GoTo 0 If cn.State adStateOpen Then Exit Sub Set rs = New ADODB.Recordset On Error Resume Next rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText On Error GoTo 0 c ate = Τίποτα Έξοδος Υπο Τέλος Αν «οι επικεφαλίδες πεδίου Για f = 0 Προς rs.Fields.Count - 1 rngTargetCell.Offset (0, f). Τύπος = rs.Fields (f). Όνομα Επόμενο f rngTargetCell.Offset (1, 0 ) .CopyFromRecordset rs "δουλεύει στο Excel 2000 ή νεότερη έκδοση" RS2WS rs, rngTargetCell "λειτουργεί στο Excel 97 ή παλαιότερα rs. Κλείσιμο συνόλου rs = Τίποτα cn. Κλείσιμο συνόλου cn = Τίποτα λήξης

Η διαδικασία μπορεί να χρησιμοποιηθεί ως εξής:

Sub TestGetTextFileData () Application.ScreenUpdating = Λάθος βιβλία εργασίας. Προσθέστε GetTextFileData "SELECT * FROM filename.txt", "C: \ FolderName", Range ("A3") 'GetTextFileData "SELECT * FROM filename.txt WHER' filename.txt ", _" C: \ FolderName ", Range (" A3 ") Columns (" A: IV "). AutoFit ActiveWorkbook.Saved = True End Sub

Αντικαταστήστε το filename.txt με το όνομα του αρχείου κειμένου από το οποίο θέλετε να λάβετε δεδομένα.
Αντικαταστήστε το C: \ FolderName με το όνομα του φακέλου στον οποίο αποθηκεύεται το αρχείο κειμένου.

Η πρώτη σειρά στο αρχείο κειμένου θα χρησιμοποιηθεί ως επικεφαλίδες στηλών/ονόματα πεδίων.
Κάθε στήλη με datwa πρέπει να διαχωρίζεται με τον χαρακτήρα διαχωριστή λίστας που χρησιμοποιείται στην περιοχή
ρυθμίσεις στον Πίνακα Ελέγχου. I Νορβηγία αυτό συνήθως είναι ερωτηματικό (;), σε άλλες χώρες αυτό μπορεί να είναι κόμμα (,).
Θα βρείτε τη διαδικασία RS2WS κάνοντας κλικ σε αυτόν τον σύνδεσμο.

Το παράδειγμα μακροεντολής υποθέτει ότι το έργο VBA σας έχει προσθέσει μια αναφορά στη βιβλιοθήκη αντικειμένων ADO.
Μπορείτε να το κάνετε αυτό μέσα από το VBE επιλέγοντας το μενού Εργαλεία, Αναφορές και επιλέγοντας τη Microsoft
Βιβλιοθήκη αντικειμένων ActiveX Data Objects x.x.