Bài này cung cấp cho bạn 2 phương thức để đọc nội dung file text trong VBA (plain text). Hãy xem các ví dụ sau đây:
Ví dụ 1: đọc toàn bộ nội dung file text trong vba bằng việc sử dụng đối tượng "ADODB.stream".
Public Const UTF_8_ENCODING = "UTF-8" '------------------------------------------- ' read file example 1 '------------------------------------------- Sub readFileExample1() Dim fileName As String Dim content As String fileName = Application.ActiveWorkbook.path & "\" & "data.txt" ' call readFile() method content = readFile(fileName, UTF_8_ENCODING) ' set content to cell "A1" Cells(1, "A").Value = content End Sub '------------------------------------------- ' read file method '------------------------------------------- Function readFile(fileName As String, charSet As String) As String Dim objStream As Object Set objStream = CreateObject("ADODB.Stream") objStream.charSet = charSet objStream.Open objStream.LoadFromFile (fileName) readFile = objStream.ReadText() Set objStream = Nothing End Function
Ví dụ 2: đọc từng dòng một bằng việc sử dụng câu lệnh Open fileName và Close.
'------------------------------------------- ' read file example 2 '------------------------------------------- Sub readFileExample2() Dim fileName As String Dim content As String Dim textRow As String fileName = Application.ActiveWorkbook.path & "\" & "data.txt" ' open file Open fileName For Input As #1 ' read line by line Do While Not EOF(1) Line Input #1, textRow content = content & textRow & vbCrLf Loop ' close file Close #1 ' set content to cell "A1" Cells(1, "A").Value = content End Sub
Ví dụ 3: đọc toàn bộ nội dung file text trong vba bằng việc sử dụng đối tượng Open fileName và Close.
'------------------------------------------- ' read file example 3 '------------------------------------------- Sub readFileExample3() Dim fileName As String Dim content As String Dim textRow As String fileName = Application.ActiveWorkbook.path & "\" & "data.txt" ' open file Open fileName For Input As #1 ' read whole content content = Input$(LOF(1), 1) ' close file Close #1 ' set content to cell "A1" Cells(1, "A").Value = content End Sub