Excel VBA FileSystemObject (FSO)
VBA FileSystemObject (FSO) hoạt động tương tự như FileDialog, được sử dụng để truy cập vào các tệp khác của máy tính mà chúng tôi đang làm việc. Chúng tôi cũng có thể chỉnh sửa các tệp này có nghĩa là đọc hoặc ghi tệp. Sử dụng FSO, chúng tôi có thể truy cập tệp, làm việc với chúng, sửa đổi tệp và thư mục. FSO là công cụ API quan trọng mà chúng ta có thể truy cập bằng VBA. Là một phần của dự án VBA, chúng tôi có thể cần truy cập một vài thư mục và tệp trong máy tính của mình để hoàn thành công việc.
Chúng tôi có thể thực hiện nhiều tác vụ bằng cách sử dụng FSO như “để kiểm tra xem thư mục có sẵn hay không”, Tạo một thư mục hoặc tệp mới, đổi tên thư mục hoặc tệp hiện có, lấy danh sách tất cả các tệp trong thư mục và cả tên thư mục con . Cuối cùng, chúng ta có thể sao chép tệp từ vị trí này sang vị trí khác.
Thậm chí có các chức năng khác có sẵn để làm việc với các thư mục và tệp, FSO là phương pháp dễ dàng nhất để làm việc với các thư mục và tệp bằng cách giữ cho mã VBA gọn gàng và thẳng hàng.
Chúng ta có thể truy cập bốn loại Đối tượng với FileSystemObject. Dưới đây là những.
- Ổ đĩa: Sử dụng đối tượng này, chúng tôi có thể kiểm tra xem ổ đĩa được đề cập có tồn tại hay không. Chúng ta có thể lấy tên đường dẫn, loại mục đích và quy mô của doanh nghiệp.
- Thư mục: Đối tượng này cho phép chúng ta kiểm tra xem thư mục cụ thể có tồn tại hay không. Chúng ta có thể tạo, xóa, sửa đổi, sao chép các thư mục bằng cách sử dụng đối tượng này.
- Tệp: Đối tượng này cho phép chúng tôi kiểm tra xem tệp cụ thể có tồn tại hay không. Chúng ta có thể tạo, xóa, sửa đổi, sao chép tệp bằng đối tượng VBA này.
- Text Stream: Đối tượng này cho phép chúng ta tạo hoặc đọc các tệp văn bản.
Tất cả các phương pháp trên đều có phương pháp của chúng để làm việc. Căn cứ vào yêu cầu của mình, chúng ta có thể lựa chọn phương pháp của từng đối tượng.

Làm thế nào để kích hoạt FileSystemObject?
Nó không thể truy cập dễ dàng trong VBA. Vì việc truy cập tệp và thư mục là nhiệm vụ bên ngoài của excel, chúng ta cần kích hoạt FileSystemObject. Để khuyến khích, hãy làm theo các bước dưới đây.
Bước # 1: Đi tới Công cụ> Tham khảo.

Bước # 2 - Chọn tùy chọn 'Microsoft Scripting Runtime'
Cuộn xuống và chọn tùy chọn 'Microsoft Scripting Runtime'. Sau khi chọn các tùy chọn, hãy nhấp vào OK.

Bây giờ chúng ta có thể truy cập FileSystemObject (FSO) trong VBA.
Tạo một phiên bản của FileSystemObject
Khi tùy chọn 'Microsoft Scripting Runtime' được kích hoạt từ thư viện Đối tượng, chúng ta cần tạo Đối tượng Hệ thống Tệp (FSO) thông qua mã hóa.
Để tạo phiên bản, trước tiên hãy khai báo biến là FileSystemObject.

Như chúng ta có thể thấy, FileSystemObject xuất hiện trong danh sách IntelliSense trong VBA. Điều này sẽ không khả dụng trước khi chúng tôi bật 'Microsoft Scripting Runtime'.
Vì FSO là một đối tượng, chúng ta cần thiết lập nó để tạo một phiên bản mới.

Bây giờ chúng ta có thể truy cập tất cả các tùy chọn của FSO (FileSystemObject).

Ví dụ sử dụng VBA FileSystemObject
Ví dụ # 1 - Tìm Tổng dung lượng ổ đĩa
Đoạn mã dưới đây sẽ cung cấp tổng dung lượng của ổ đĩa.
Mã:
Sub FSO_Example1 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject Dim DriveName As Drive Dim DriveSpace As Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Tạo đối tượng ổ đĩa mới DriveSpace = DriveName.FreeSpace' Điều này sẽ nhận được không gian trống của ổ đĩa "C" DriveSpace = DriveSpace / 1073741824 'Điều này sẽ chuyển đổi không gian trống thành GB DriveSpace = Round (DriveSpace, 2)' Làm tròn tổng dung lượng MsgBox "Drive" & DriveName & "có" & DriveSpace & "GB" End Phụ

Phá vỡ quy tắc.
Đầu tiên, chúng tôi tạo một phiên bản của FSO.
Làm mờ MyFirstFSO dưới dạng FileSystemObject Đặt MyFirstFSO = FileSystemObject mới
Tiếp theo, chúng tôi đã khai báo hai biến.
Dim DriveName As Drive Dim DriveSpace As Double
Vì DriveName là một biến Đối tượng, chúng tôi cần đặt biến này thành FSO một trong các phương thức FSO. Vì chúng tôi cần đặc tính của ổ đĩa, chúng tôi đã sử dụng tùy chọn Get Drive và đề cập đến tên ổ đĩa.
Đặt DriveName = MyFirstFSO.GetDrive ("C:")
Đối với một biến khác, DriveSpace, chúng tôi sẽ gán phương thức không gian trống của ổ đĩa mà chúng tôi đang truy cập.
DriveSpace = DriveName.FreeSpace
Hiện tại, phương trình trên có thể giúp chúng ta có được không gian trống của ổ đĩa “C.”. Vì vậy, để hiển thị kết quả bằng GB, chúng tôi đã chia không gian mở cho 1073741824
DriveSpace = DriveSpace / 1073741824
Tiếp theo, chúng ta sẽ làm tròn số.
DriveSpace = Vòng (DriveSpace, 2)
Cuối cùng, hiển thị kết quả trong Hộp thư.
MsgBox "Drive" & DriveName & "có" & DriveSpace & "GB"
When we run the code manually or through shortcut key F5, then in the message box, we will get the free space of the drive “C.”

So, in my computer Drive C has 216.19 GB of free space memory.
Example #2 - Check Whether the Folder Exists or Not
To check whether the particular folder exists or not, use the below code.
If the mentioned folder is available, it will show us the message box as “The Mentioned Folder is Available.” If not, it will show the VBA message box as “The Mentioned Folder is Not Available.”
Code:
Sub FSO_Example2() Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FolderExists("D:Excel FilesVBAVBA Files") Then MsgBox "The Mentioned Folder is Available" Else MsgBox "The Mentioned Folder is Not Available" End If End Sub

Chạy mã này thông qua phím tắt F5 của excel hoặc theo cách thủ công, sau đó xem kết quả.

Ví dụ # 3 - Kiểm tra xem tệp có tồn tại hay không
Đoạn mã dưới đây sẽ kiểm tra xem tệp được đề cập có sẵn hay không.
Mã:
Sub FSO_Example3 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FileExists ("D: Excel Files VBA VBA Files Testing File.xlsm") Sau đó MsgBox "Tệp được đề cập có sẵn" Khác MsgBox "Được đề cập Tệp không có sẵn "End If End Sub

Chạy mã này theo cách thủ công hoặc sử dụng phím F5, sau đó xem kết quả.
