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

Innehållsförteckning

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.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave