VBA - Ghi vào tệp văn bản

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

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave