Hướng dẫn này sẽ trình bày cách ghi vào tệp văn bản bằng VBA.
Ghi vào tệp văn bản
Các mã dưới đây sử dụng FileSystemObject. Để sử dụng nó, bạn sẽ cần đặt một tham chiếu đến thư viện thời gian chạy tập lệnh VB.
Ghi vào tệp văn bản mới
Với CreateTextFile phương pháp của FileSystemObject bạn có thể tạo và sau đó thêm nội dung vào tệp văn bản:
123456789 | Sub FSOCreateAndWriteToTextFile ()Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "dòng kiểm tra"FileToCreate.CloseKết thúc Sub |
Xin lưu ý rằng nội dung sẽ không được bao gồm trong dấu ngoặc kép.
Ghi vào tệp văn bản hiện có
Để ghi vào một tệp văn bản hiện có, bạn có thể sử dụng OpenTextFile phương pháp của FileSystemObject với ForWriting chế độ.
123456789 | Sub FSOWriteToTextFile ()Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "dòng kiểm tra"FileToWrite.CloseKết thúc Sub |
Xin lưu ý rằng bạn không nhất thiết phải cần FileSystemObject để ghi vào một tệp văn bản hiện có. Ví dụ trên được hiển thị theo một cách khác trong đoạn mã này bên dưới (xem ví dụ khác trong phần Dải dữ liệu thành Tệp văn bản):
123456789 | Sub WriteToTextFile ()Dim FileName As StringFileName = "C: \ Test \ TestFile.txt"Mở FileName cho đầu ra là # 1Print # 1, "test line"Đóng # 1Kết thúc Sub |
Xin lưu ý rằng việc sử dụng lệnh Write thay vì Print sẽ dẫn đến việc có nội dung được thêm vào trong dấu ngoặc kép. Có cả hai lệnh trong macro của bạn
12 | Viết số 1, "dòng kiểm tra số 1"Print # 1, "test line # 2" |
sẽ dẫn đến một tệp văn bản như thế này:
Lập trình VBA | Code Generator làm việc cho bạn!
Nối vào tệp văn bản
Bằng cách thay đổi chế độ trong đoạn mã trên thành ForAppending, một dòng có thể được thêm vào cuối tệp văn bản:
1 | Đặt FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending) |
Phương pháp WriteLine
Phương thức này nối chuỗi đầu vào dưới dạng một dòng riêng biệt với nội dung hiện có.
Viết phương pháp
Chuỗi đầu vào được nối trên cùng một dòng với nội dung hiện có.
Bạn mệt mỏi với việc tìm kiếm ví dụ về mã VBA? Hãy thử AutoMacro!
WriteBlankLines
Phương thức này lấy số dòng trống được ghi vào tệp văn bản làm tham số.
Đoạn mã dưới đây minh họa sự khác biệt giữa các phương pháp ghi khác nhau:
12345678910111213 | Viết phụ ()Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)FileToWrite.Write "dòng kiểm tra số 1"FileToWrite.Write "dòng kiểm tra số 2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "dòng kiểm tra # 3"FileToWrite.WriteLine "dòng kiểm tra # 4"FileToWrite.CloseKết thúc Sub |
Và kết quả:
Lập trình VBA | Code Generator làm việc cho bạn!
Dải dữ liệu thành tệp văn bản
Nếu bạn muốn xuất một dải dữ liệu từ trang tính của mình sang tệp văn bản, bạn có thể sử dụng mã này:
12345678910111213141516171819 | Sub OutputToTextFile ()Dim FileName As String, LineText As StringDim MyRange As Range, i, jFileName = "C: \ Test \ TestFile.txt" 'bạn có thể chỉ định ở đây tên tệp văn bản mà bạn muốn tạoMở FileName cho đầu ra là # 1Đặt MyRange = Range ("data") 'nó giả định rằng bạn có một dải dữ liệu có tên là “data” trên trang tính của mìnhĐối với i = 1 Đến MyRange.Rows.CountĐối với j = 1 Đến MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'tệp văn bản tạo sẽ có dấu phân cách bằng dấu phẩyTiếp theo jPrint # 1, LineText 'bằng cách sử dụng lệnh Write thay vì Print sẽ dẫn đến việc dữ liệu của bạn nằm trong dấu ngoặc kép trong tệp văn bản đầu raTiếp theo tôiĐóng # 1Kết thúc Sub |
Mảng thành tệp văn bản
Bạn cũng có thể lưu mảng dữ liệu của mình vào một tệp văn bản như sau:
12345678910111213141516 | Sub SaveArrayToTextFile ()Dim MyArray làm biến thểLàm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Đặt FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")Đối với n = 0 Đến UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)Kế tiếpFileToCreate.CloseKết thúc Sub |