Importuokite duomenis iš teksto failo (ADO) naudodami „Microsoft Excel“ VBA

Anonim

Toliau aprašyta procedūra gali būti naudojama norint gauti ADO įrašų rinkinį iš teksto failo ir užpildyti rezultatą darbalapyje.

Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'pavyzdys: GetTextFileData "SELECT * FROM filename.txt", _ "C: FolderName", Range ("A3") pavyzdys: GetTextFileData "SELECT * FROM filename.txt WHERE lauko pavadinimas = 'kriterijai' ", _" C: \ FolderName ", diapazonas (" A3 ") Dim cn Kaip ADODB.Connection, rs Kaip ADODB.Recordset, f Kaip sveikasis skaičius Jei rngTargetCell yra niekas, tada išeikite iš antrinio rinkinio cn = Naujas ADODB.Connection On Error Tęsti Kitas cn.Open "Driver = {Microsoft Text Driver ( *.txt; *.csv)};" & _ "Dbq =" & strFolder & ";" & _ "Plėtiniai = 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 cnCate = Nieko nėra Išeiti iš pabaigos pabaigos, jei lauko antraštės f = 0 iki rs.Fields.Count - 1 rngTargetCell.Offset (0, f). Formula = rs.Fields (f). Pavadinimas Kitas f rngTargetCell.Offset (1, 0 ). „CopyFromRecordset rs“ veikia „Excel 2000“ ar naujesnėje versijoje „RS2WS rs, rngTargetCell“ veikia „Excel 97“ arba ankstesnėje versijoje rs. Uždaryti rinkinį rs = Nieko cn. Uždaryti rinkinį cn = Nieko pabaigos

Procedūrą galima naudoti taip:

Sub TestGetTextFileData () Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C: \ FolderName", Range ("A3") 'GetTextFileData "SELECT * FROM filename.txt WHERE lauko pavadinimas =' kriterijai ' ", _" C: \ FolderName ", Diapazonas (" A3 ") Stulpeliai (" A: IV "). AutoFit ActiveWorkbook.Saved = True End Sub

Pakeiskite failo pavadinimą.txt teksto failo, iš kurio norite gauti duomenis, pavadinimu.
Pakeiskite C: \ FolderName aplanko, kuriame išsaugotas tekstinis failas, pavadinimu.

Pirmoji teksto failo eilutė bus naudojama kaip stulpelių antraštės/laukų pavadinimai.
Kiekvienas stulpelis su datwa turi būti atskirtas sąrašo skiriamuoju ženklu, kuris naudojamas regione
nustatymus valdymo skydelyje. Norvegijoje tai paprastai yra kabliataškis (;), kitose šalyse tai gali būti kablelis (,).
RS2WS procedūrą rasite spustelėję šią nuorodą.

Makrokomandos pavyzdyje daroma prielaida, kad jūsų VBA projektas pridėjo nuorodą į ADO objektų biblioteką.
Tai galite padaryti iš VBE, pasirinkę meniu Įrankiai, Nuorodos ir pasirinkę „Microsoft“
„ActiveX“ duomenų objektai x.x objektų biblioteka.