VBA - Đọc từng dòng tệp văn bản

Hướng dẫn này sẽ trình bày cách đọc nội dung từ tệp văn bản từng dòng bằng VBA.

Chúng ta có thể đọc tệp văn bản dưới dạng toàn bộ tệp hoặc từng dòng.

Đọc từng dòng tệp văn bản

Văn bản trong tệp văn bản thường được tạo thành từ một số dòng, phân tách bằng dấu phân cách. Đây có thể là dấu phẩy (“,”), dấu phẩy với dấu cách (“,“), dấu chấm phẩy (“;”), dấu chấm phẩy với dấu cách (“;“), dấu cách (““), tab (vbTab ) hoặc trong một số trường hợp hiếm hoi, bất kỳ ký tự nào khác như dấu ngã (~). Các dòng thường được phân tách bằng dấu ngắt dòng (vbCRLF).

Cách dễ nhất để đọc từng dòng một tệp văn bản vào Trang tính của chúng tôi trong VBA là chọn ô đầu tiên mà chúng tôi muốn đặt văn bản, sau đó chạy mã sau:

1234567891011 Sub ReadFile ()Dim strFile As String, strLine As StringstrFile = "C: \ Test \ TestFile.txt"Mở strFile cho đầu vào là # 1Làm cho đến khi EOF (1)Đầu vào dòng # 1, strLineActiveCell = strLineActiveCell.Offset (1, 0) .SelectVòngĐóng # 1Kết thúc Sub

Thao tác này sẽ đặt mỗi dòng của tệp văn bản vào một ô duy nhất trong Excel.

Chúng tôi cũng có thể đọc tệp văn bản trong VBA bằng cách sử dụng FileSystemObject. Trong đoạn mã dưới đây, chúng tôi đã sử dụng liên kết muộn với Đối tượng Hệ thống Tệp. Bạn cũng có thể tạo tham chiếu đến nó trong dự án VBA của mình. Xem ở đây để biết thêm thông tin.

123456789101112131415 Sub ReadTextFile ()Dim strLine As StringLàm mờ FSO dưới dạng Đối tượngLàm mờ TSO dưới dạng đối tượngĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Do trong khi không TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0) .SelectVòngTSO.CloseĐặt TSO = Không có gìĐặt FSO = Không có gìKết thúc Sub

Chúng ta có thể tạo một vòng lặp phức tạp hơn một chút nếu chúng ta muốn tách các dòng thành các ô bằng dấu phân cách của chúng. Ở đây chúng tôi đã sử dụng liên kết sớm trong mã và khai báo Đối tượng Hệ thống Tệp.

123456789101112131415161718192021222324 Sub ReadTextFileWithSeparators ()Dim StrLine As StringLàm mờ FSO dưới dạng FileSystemObject mớiLàm mờ TSO dưới dạng đối tượngDim StrLineElements as VariantChỉ số mờ càng lâuDim i As LongDấu phân cách mờ dưới dạng chuỗiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Dấu phân cách = ","Chỉ mục = 1Làm trong khi TSO.AtEndOfStream = SaiStrLine = TSO.ReadLineStrLineElements = Tách (StrLine, Dấu phân cách)Đối với i = LBound (StrLineElements) đến UBound (StrLineElements)Các ô (Chỉ mục, i + 1) .Value = StrLineElements (i)Tiếp theo tôiChỉ mục = Chỉ mục + 1VòngTSO.CloseĐặt TSO = Không có gìĐặt FSO = Không có gìKết thúc Sub

Điều này sẽ dẫn đến việc các dòng được tách thành các ô riêng lẻ trong Excel theo hình bên dưới.

wave wave wave wave wave