Importera data från en textfil (ADO) med VBA i Microsoft Excel

Anonim

Proceduren nedan kan användas för att hämta en ADO -postuppsättning från en textfil och fylla i resultatet i ett kalkylblad.

Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'exempel: GetTextFileData "SELECT * FROM filename.txt", _ "C: \ FolderName", Range ("A3")' exempel: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria' ", _" C: \ FolderName ", Range (" A3 ") Dim cn As ADODB.Connection, r As ADODB.Recordset, f As Integer If rngTargetCell Is Nothing Then Exit Sub Set cn = Ny ADODB.Koppling vid fel Återuppta nästa cn.Open "Driver = {Microsoft Text Driver ( *.txt; *.csv)};" & _ "Dbq =" & strFolder & ";" & _ "Tillägg = 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. = Ingenting Avsluta Sub End Om 'fältrubrikerna För f = 0 Till rs.Fields.Count - 1 rngTargetCell.Offset (0, f) .Formula = rs.Fields (f) .Name Nästa f rngTargetCell.Offset (1, 0 ) .CopyFromRecordset rs 'fungerar i Excel 2000 eller senare' RS2WS rs, rngTargetCell 'fungerar i Excel 97 eller tidigare rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub

Proceduren kan användas så här:

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

Ersätt filnamn.txt med namnet på textfilen du vill hämta data från.
Ersätt C: \ FolderName med namnet på mappen där textfilen är sparad.

Den första raden i textfilen kommer att användas som kolumnrubriker/fältnamn.
Varje kolumn med datwa måste separeras med listavgränsarens tecken som används i det regionala
inställningar i kontrollpanelen. I Norge brukar detta vara semikolon (;), i andra länder kan detta vara ett komma (,).
Du hittar proceduren RS2WS genom att klicka på den här länken.

Makroexemplet förutsätter att ditt VBA -projekt har lagt till en referens till ADO -objektbiblioteket.
Du kan göra detta från VBE genom att välja menyn Verktyg, Referenser och välja Microsoft
ActiveX Data Objects x.x Object Library.