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.
![](https://post.nghiatu.com/assets/tutorial/vba/images/excel_fso_1.jpg)
Step 2 - Thêm "Microsoft Scripting RunTime" và Click OK.
![](https://post.nghiatu.com/assets/tutorial/vba/images/excel_fso_2.jpg)
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.
![](https://post.nghiatu.com/assets/tutorial/vba/images/excel_fso_3.jpg)
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".
![](https://post.nghiatu.com/assets/tutorial/vba/images/excel_fso_4.jpg)
Nội dung của tệp được hiển thị trong ảnh chụp màn hình sau.
![](https://post.nghiatu.com/assets/tutorial/vba/images/excel_fso_5.jpg)
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.
![](https://post.nghiatu.com/assets/tutorial/vba/images/excel_fso_6.jpg)
Nội dung của tệp được hiển thị trong ảnh chụp màn hình sau.
![](https://post.nghiatu.com/assets/tutorial/vba/images/excel_fso_5.jpg)