Импортирайте данни от текстов файл (ADO), използвайки VBA в Microsoft Excel

Anonim

Процедурата по -долу може да се използва за получаване на набор от записи ADO от текстов файл и попълване на резултата в работен лист.

Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'пример: GetTextFileData "SELECT * FROM filename.txt", _ "C: \ FolderName", Range ("A3")' пример: GetTextFileData SELECT 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 = Нов ADODB.Connection On Error Resume Next cn.Open "Driver = {Microsoft Text Driver ( *.txt; *.csv)};" & _ "Dbq =" & strFolder & ";" & _ "Разширения = asc, csv, tab, txt;" При грешка GoTo 0 Ако cn.State adStateOpen След това излезте от Sub Set rs = New ADODB.Recordset On Error Resume Следващ rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText При грешка GoTo 0 Ако rs.State cStConOpen = Нищо Изход Sub End Ако 'заглавията на полета За f = 0 За rs.Fields.Count - 1 rngTargetCell.Offset (0, f) .Formula = rs.Fields (f) .Name Next f rngTargetCell.Offset (1, 0 ) .CopyFromRecordset rs "работи в Excel 2000 или по -нова версия" RS2WS rs, rngTargetCell "работи в Excel 97 или по -ранна версия. Затваряне на rs = Нищо cn.

Процедурата може да се използва по следния начин:

Sub TestGetTextFileData () Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C: \ FolderName", Range ("A3") 'GetTextFileData "SELECT * FROM filename.txt' Име на полето ", _" C: \ FolderName ", Диапазон (" A3 ") Колони (" A: IV "). AutoFit ActiveWorkbook.Saved = True End Sub

Заменете filename.txt с името на текстовия файл, от който искате да получите данни.
Заменете C: \ FolderName с името на папката, където е записан текстовият файл.

Първият ред в текстовия файл ще се използва като заглавия на колони/имена на полета.
Всяка колона с datwa трябва да бъде разделена със знака за разделяне на списъка, който се използва в регионалното
настройки в контролния панел. В Норвегия това обикновено е точка и запетая (;), в други страни това може да е запетая (,).
Ще намерите процедурата RS2WS, като щракнете върху тази връзка.

Примерът за макрос предполага, че вашият VBA проект е добавил препратка към библиотеката с обекти на ADO.
Можете да направите това от VBE, като изберете менюто Инструменти, Препратки и изберете Microsoft
ActiveX Data Objects x.x Object Library.