Procedura de mai jos poate fi utilizată pentru a obține un set de înregistrări ADO dintr-un fișier text și pentru a completa rezultatul într-o foaie de lucru.
Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'exemplu: GetTextFileData "SELECT * FROM filename.txt", _ "C: \ FolderName", Range ("A3")' exemplu: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria' ", _" 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 & ";" & _ "Extensii = 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 If rs.State adStateOpen Then cn.Close = Nothing Exit Sub End If 'the head headings For f = 0 To rs.Fields.Count - 1 rngTargetCell.Offset (0, f) .Formula = rs.Fields (f) .Name Next f rngTargetCell.Offset (1, 0 ) .CopyFromRecordset rs 'funcționează în Excel 2000 sau o versiune ulterioară' RS2WS rs, rngTargetCell 'funcționează în Excel 97 sau versiuni anterioare rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
Procedura poate fi utilizată astfel:
Sub TestGetTextFileData () Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C: \ FolderName", Range ("A3") 'GetTextFileData "SELECT * FROM filename.txt WHERE nume de câmp =' criterii ' ", _" C: \ FolderName ", Coloane Range (" A3 ") (" A: IV "). AutoFit ActiveWorkbook.Saved = True End Sub
Înlocuiți filename.txt cu numele fișierului text din care doriți să obțineți date.
Înlocuiți C: \ FolderName cu numele folderului în care este salvat fișierul text.
Primul rând din fișierul text va fi folosit ca titluri de coloană / nume de câmp.
Fiecare coloană cu datwa trebuie separată cu caracterul separator de listă care este utilizat în regional
din panoul de control. I Norvegia, acesta este de obicei punct și virgulă (;), în alte țări aceasta poate fi o virgulă (,).
Veți găsi procedura RS2WS făcând clic pe acest link.
Exemplul macro presupune că proiectul dvs. VBA a adăugat o referință la biblioteca de obiecte ADO.
Puteți face acest lucru din VBE selectând meniul Instrumente, Referințe și selectând Microsoft
ActiveX Data Objects x.x Library de obiecte.