Nhập dữ liệu từ tệp văn bản (ADO) bằng VBA trong Microsoft Excel
Quy trình dưới đây có thể được sử dụng để lấy bộ bản ghi ADO từ tệp văn bản và điền kết quả vào trang tính.
Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range) ' example: GetTextFileData "SELECT * FROM filename.txt", _ "C:\FolderName", Range("A3") ' example: GetTextFileData "SELECT * FROM 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 = New ADODB.Connection On Error Resume Next cn.Open "Driver={Microsoft Text Driver (.txt; .csv)};" & _ "Dbq=" & strFolder & ";" & _ "Extensions=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.Close Set cn = Nothing Exit Sub End If ' the field headings 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 ' works in Excel 2000 or later 'RS2WS rs, rngTargetCell ' works in Excel 97 or earlier rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
Thủ tục có thể được sử dụng như sau:
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
Thay thế filename.txt bằng tên của tệp văn bản mà bạn muốn lấy dữ liệu.
Thay thế C: \ FolderName bằng tên của thư mục nơi tệp văn bản được lưu.
Hàng đầu tiên trong tệp văn bản sẽ được sử dụng làm tiêu đề cột / tên trường.
Mỗi cột có datwa phải được phân tách bằng ký tự phân tách danh sách được sử dụng trong cài đặt khu vực trong Bảng điều khiển. I Na Uy, đây thường là dấu chấm phẩy (;), ở các quốc gia khác, đây có thể là dấu phẩy (,).
Bạn sẽ tìm thấy quy trình RS2WS bằng cách nhấp vào liên kết này.
Ví dụ macro giả định rằng dự án VBA của bạn đã thêm một tham chiếu đến thư viện đối tượng ADO.
Bạn có thể thực hiện việc này từ bên trong VBE bằng cách chọn menu Tools, References và chọn Microsoft ActiveX Data Objects x.x Object Library.