Gegevens importeren uit een tekstbestand (ADO) met VBA in Microsoft Excel

Anonim

De onderstaande procedure kan worden gebruikt om een ​​ADO-recordset uit een tekstbestand te halen en het resultaat in een werkblad in te vullen.

Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range) ' voorbeeld: GetTextFileData "SELECT * FROM filename.txt", _ "C:\FolderName", Range("A3") ' voorbeeld: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria'", _ "C:\FolderName", Range("A3") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer Als rngTargetCell niets is, sluit dan subset af cn = Nieuwe ADODB.Verbinding bij fout Hervatten Volgende cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=" & strFolder & ";" & _ "Extensies=asc,csv,tab,txt;" Bij fout GoTo 0 If cn.State adStateOpen Dan afsluiten Sub Set rs = New ADODB.Recordset Bij fout Hervatten Volgende rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText Bij fout GoTo 0 If rs.State adStateOpen cn.Close = Niets Exit Sub End If ' de veldkoppen For f = 0 To rs.Fields.Count - 1 rngTargetCell.Offset(0, f).Formula = rs.Fields(f).Name Volgende fr rngTargetCell.Offset(1, 0 ).CopyFromRecordset rs ' werkt in Excel 2000 of later 'RS2WS rs, rngTargetCell ' werkt in Excel 97 of eerder rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub

De procedure kan als volgt worden gebruikt:

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") Columns("A:IV").AutoFit ActiveWorkbook.Saved = True End Sub

Vervang bestandsnaam.txt door de naam van het tekstbestand waaruit u gegevens wilt halen.
Vervang C:\FolderName door de naam van de map waarin het tekstbestand is opgeslagen.

De eerste rij in het tekstbestand wordt gebruikt als kolomkoppen/veldnamen.
Elke kolom met datwa moet worden gescheiden door het lijstscheidingsteken dat wordt gebruikt in de regionale
instellingen in het Configuratiescherm. I Noorwegen is dit meestal een puntkomma (;), in andere landen kan dit een komma (,) zijn.
U vindt de procedure RS2WS door op deze link te klikken.

Het macrovoorbeeld gaat ervan uit dat uw VBA-project een verwijzing naar de ADO-objectbibliotheek heeft toegevoegd.
U kunt dit doen vanuit de VBE door het menu Tools, References te selecteren en Microsoft . te selecteren
ActiveX-gegevensobjecten x.x-objectbibliotheek.