VBA FileSystemObject (FSO) | Làm thế nào để truy cập FileSystemObject?

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 ta 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 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, và 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 4 loại Đối tượng với FileSystemObject. Dưới đây là những.

  1. Drive: Sử dụng đối tượng này, chúng ta 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 ổ đĩa và kích thước của ổ đĩa.
  2. 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.
  3. 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 các tập tin bằng cách sử dụng đối tượng vba này.
  4. 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 riêng để làm việc. Dựa trên yêu cầu của chúng tôi, chúng tôi có thể 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ì truy cập tệp và thư mục là nhiệm vụ bên ngoài của excel, chúng tôi cần kích hoạt FileSystemObject. Để kích hoạt, 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 phiên bản Đối tượng Hệ thống Tệp (FSO) thông qua mã hóa.

Để tạo phiên bản, đầu tiên hãy khai báo biến là FileSystemObject.

Như chúng ta có thể thấy FileSystemObject đang 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 nên 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

Bạn có thể tải xuống Mẫu VBA FileSystemObject Excel này tại đây - Mẫu VBA FileSystemObject Excel

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.

 Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject

Tiếp theo, chúng ta đã khai báo hai biến.

 Dim DriveName As Drive Dim DriveSpace As Double 

Vì DriveName là một biến Đối tượng nên 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:")

Bây giờ đối với DriveSpace biến khác, 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ó dung lượng 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 trống 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"

Khi chúng ta chạy mã theo cách thủ công hoặc thông qua phím tắt F5, thì trong hộp thông báo, chúng ta sẽ nhận được dung lượng trống của ổ đĩa “C”.

Vì vậy, trong máy tính của tôi, Ổ C có 216,19 GB bộ nhớ trống.

Ví dụ # 2 - Kiểm tra xem Thư mục có tồn tại hay không

Để kiểm tra xem thư mục cụ thể có tồn tại hay không, hãy sử dụng mã dưới đây.

Nếu thư mục được đề cập có sẵn thì nó sẽ hiển thị cho chúng ta hộp thông báo là “Thư mục được đề cập có sẵn” , nếu không, nó sẽ hiển thị hộp thông báo VBA là “Thư mục được đề cập không có sẵn”.

Mã:

 Sub FSO_Example2 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject Nếu MyFirstFSO.FolderExists ("D: \ Excel Files \ VBA \ VBA Files") Sau đó MsgBox "Thư mục được đề cập có sẵn" Khác MsgBox "Thư mục được đề cập không có sẵn" 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ả.


$config[zx-auto] not found$config[zx-overlay] not found