VBA - Tệp văn bản

Bạn cũng có thể đọc Tệp Excel và ghi nội dung của ô vào Tệp Văn bản bằng VBA. VBA cho phép người dùng làm việc với các tệp văn bản bằng hai phương pháp:

  • Đối tượng hệ thống tệp
  • sử dụng lệnh Viết

Đối tượng Hệ thống Tệp (FSO)

Như tên cho thấy, FSO giúp các nhà phát triển làm việc với ổ đĩa, thư mục và tệp. Trong phần này, chúng ta sẽ thảo luận về cách sử dụng FSO.

Sr.No. Loại đối tượng & Mô tả
1

Drive

Ổ đĩa là một Đối tượng. Chứa các phương thức và thuộc tính cho phép bạn thu thập thông tin về một ổ đĩa được gắn vào hệ thống.

2

Drives

Ổ đĩa là một Bộ sưu tập. Nó cung cấp danh sách các ổ đĩa được gắn vào hệ thống, về mặt vật lý hoặc logic.

3

File

Tệp là một đối tượng. Nó chứa các phương thức và thuộc tính cho phép các nhà phát triển tạo, xóa hoặc di chuyển một tệp.

4

Files

Tệp là một Bộ sưu tập. Nó cung cấp danh sách tất cả các tệp có trong một thư mục.

5

Folder

Thư mục là một Đối tượng. Nó cung cấp các phương thức và thuộc tính cho phép các nhà phát triển tạo, xóa hoặc di chuyển các thư mục.

6

Folders

Thư mục là một Bộ sưu tập. Nó cung cấp danh sách tất cả các thư mục trong một thư mục.

7

TextStream

TextStream là một đối tượng. Nó cho phép các nhà phát triển đọc và ghi các tệp văn bản.

Lái xe

Drivelà một đối tượng, cung cấp quyền truy cập vào các thuộc tính của một ổ đĩa cụ thể hoặc chia sẻ mạng. Các thuộc tính sau được hỗ trợ bởiDrive đối tượng -

  • AvailableSpace
  • DriveLetter
  • DriveType
  • FileSystem
  • FreeSpace
  • IsReady
  • Path
  • RootFolder
  • SerialNumber
  • ShareName
  • TotalSize
  • VolumeName

Thí dụ

Step 1- Trước khi tiến hành viết script bằng FSO, chúng ta nên kích hoạt Microsoft Scripting Runtime. Để làm tương tự, hãy điều hướng đến Công cụ → Tham khảo như được hiển thị trong ảnh chụp màn hình sau.

Step 2 - Thêm "Microsoft Scripting RunTime" và Click OK.

Step 3 - Thêm dữ liệu mà bạn muốn ghi vào tệp văn bản và thêm nút lệnh.

Step 4 - Bây giờ là lúc để Script.

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   Dim fso As FileSystemObject
   Set fso = New FileSystemObject
   Dim stream As TextStream
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   ' Create a TextStream.
   Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True)
  
   CellData = ""
  
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = Trim(ActiveCell(i, j).Value)
         stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
      Next j
   Next i
  
   stream.Close
   MsgBox ("Job Done")
End Sub

Đầu ra

Khi thực thi tập lệnh, hãy đảm bảo rằng bạn đặt con trỏ vào ô đầu tiên của trang tính. Tệp Support.log được tạo như thể hiện trong ảnh chụp màn hình sau trong "D: \ Try".

Nội dung của tệp được hiển thị trong ảnh chụp màn hình sau.

Viết lệnh

Không giống như FSO, chúng tôi KHÔNG cần thêm bất kỳ tham chiếu nào, tuy nhiên, chúng tôi sẽ KHÔNG thể làm việc với ổ đĩa, tệp và thư mục. Chúng tôi sẽ có thể chỉ thêm luồng vào tệp văn bản.

Thí dụ

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   FilePath = "D:\Try\write.txt"
   Open FilePath For Output As #2
  
   CellData = ""
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
         Write #2, CellData
      Next j
   Next i
  
   Close #2
   MsgBox ("Job Done")
End Sub

Đầu ra

Sau khi thực thi tập lệnh, tệp "write.txt" được tạo ở vị trí "D: \ Try" như thể hiện trong ảnh chụp màn hình sau.

Nội dung của tệp được hiển thị trong ảnh chụp màn hình sau.