Poniższa procedura może być użyta do pobrania zestawu rekordów ADO z pliku tekstowego i wypełnienia wyniku w arkuszu.
Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range) ' przykład: GetTextFileData "SELECT * FROM nazwapliku.txt", _ "C:\FolderName", Range("A3") ' przykład: GetTextFileData "SELECT * FROM filename.txt WHERE nazwa pola = 'kryteria'", _ "C:\FolderName", Range("A3") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer Jeśli rngTargetCell jest niczym, a następnie wyjdź z podzbioru cn = Nowe ADODB.Połączenie po błędzie Wznów Dalej cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=" & strFolder & ";" & _ "Rozszerzenia=asc,csv,tab,txt;" W przypadku błędu Przejdź do 0 Jeśli cn.State adStateOpen Następnie wyjdź z zestawu podrzędnego rs = New ADODB.Recordset W przypadku błędu Wznów Dalej rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText W przypadku błędu Przejdź do 0 Jeśli rs.State adStateOpen Następnie cn.Close Ustaw cn = Nic Wyjdź Sub End If ' nagłówki pól 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 ' działa w programie Excel 2000 lub nowszym 'RS2WS rs, rngTargetCell ' działa w programie Excel 97 lub starszym rs.Close Set rs = Nic cn.Close Set cn = Nic End Sub
Procedurę można zastosować w następujący sposób:
Sub TestGetTextFileData() Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM nazwapliku.txt", "C:\FolderName", Range("A3") ' GetTextFileData "SELECT * FROM nazwapliku.txt WHERE nazwa pola = 'kryteria' ", _ "C:\FolderName", Range("A3") Columns("A:IV").AutoFit ActiveWorkbook.Saved = True End Sub
Zastąp filename.txt nazwą pliku tekstowego, z którego chcesz pobrać dane.
Zastąp C:\FolderName nazwą folderu, w którym zapisany jest plik tekstowy.
Pierwszy wiersz w pliku tekstowym zostanie użyty jako nagłówki kolumn/nazwy pól.
Każda kolumna z datawą musi być oddzielona znakiem separatora listy, który jest używany w regional
ustawienia w Panelu sterowania. W Norwegii zwykle jest to średnik (;), w innych krajach może to być przecinek (,).
Procedurę RS2WS znajdziesz klikając na ten link.
W przykładzie makra założono, że projekt VBA dodał odwołanie do biblioteki obiektów ADO.
Możesz to zrobić z poziomu VBE, wybierając menu Narzędzia, Referencje i wybierając Microsoft
ActiveX Data Objects x.x Biblioteka obiektów.