Importer data fra en tekstfil (ADO) ved hjelp av VBA i Microsoft Excel

Anonim

Fremgangsmåten nedenfor kan brukes til å hente et ADO -rekordsett fra en tekstfil og fylle ut resultatet i et regneark.

Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'eksempel: GetTextFileData "SELECT * FROM filename.txt", _ "C: \ FolderName", Range ("A3")' eksempel: 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 = Ny 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 If rs.State adStateOpen Then cn. = Nothing Exit Sub End If 'field 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 'fungerer i Excel 2000 eller nyere' RS2WS rs, rngTargetCell 'fungerer i Excel 97 eller tidligere rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub

Prosedyren kan brukes slik:

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

Erstatt filnavn.txt med navnet på tekstfilen du vil hente data fra.
Erstatt C: \ FolderName med navnet på mappen der tekstfilen er lagret.

Den første raden i tekstfilen vil bli brukt som kolonneoverskrifter/feltnavn.
Hver kolonne med datwa må skilles med listeskilletegnet som brukes i det regionale
innstillinger i kontrollpanelet. I Norge er dette vanligvis semikolon (;), i andre land kan dette være komma (,).
Du finner prosedyren RS2WS ved å klikke på denne lenken.

Makroeksemplet forutsetter at VBA -prosjektet ditt har lagt til en referanse til ADO -objektbiblioteket.
Du kan gjøre dette fra VBE ved å velge menyen Verktøy, Referanser og velge Microsoft
ActiveX Data Objects x.x Object Library.