FSO (FileSystemObjec) là một trong những công cụ mạnh mẽ chuyên dùng để xử lý những vấn đề liên quan đến Drive, Folders và Files, bài viết dưới đây, Taimienphi.vn sẽ tập trung hướng dẫn bạn cách kích hoạt FileSystemObject trong VBA nhé.
Mặc định thì FileSystemObject không có sẵn trong VBA Excel. Trường hợp nếu bạn đang xử lý các file và thư mục ở bên ngoài ứng dụng Excel thì bước đầu tiên chúng ta cần làm là tạo một tham chiếu đến thư viện chưa các đối tượng này (drive, file, folder).
Cách để kích hoạt và bắt đầu sử dụng FileSystemObject trong VBA
Hướng dẫn kích hoạt FileSystemObject trong VBA
Có 2 cách để bạn kích hoạt và bắt đầu sử dụng FileSystemObject trong VBA:
Cách 1: Thiết lập tham chiếu đến Microsoft Scripting Runtime Library (Scrrun.dll).
Cách 2: Tạo một đối tượng để tham chiếu đến thư viện từ mã.
Mặc dù cả 2 phương pháp đều hoạt động hoàn hảo, tuy nhiên Taimienphi.vn khuyến cáo bạn nên áp dụng cách đầu tiên.
Lưu ý: Khi kích hoạt FileSystemObject, chúng ta có thể truy cập tất cả các đối tượng trong đó, bao gồm FileSystemObject, Drive, Files, Folders.... .
1. Thiết lập tham chiếu đến Microsoft Scripting Runtime Library (Scrrun.dll)
Khi tạo một tham chiếu đến thư viện Scripting Runtime Library, chúng ta cho phép VBA truy cập tất cả các thuộc tính và phương thức của file và thư mục.
Sau khi thực hiện xong, chúng ta có thể tham chiếu các đối tượng file / folder / driver ngay bên trong VBA (giống như chúng ta có thể tham chiếu các ô, bảng tính, ...).
Thực hiện theo các bước dưới đây để tạo tham chiếu đến Microsoft Scripting Runtime Library:
Bước 1: Trong trình chỉnh sửa VB, click chọn Tools.
Bước 2: Click chọn References.
Bước 3: Trong hộp thoại References, cuộn qua các tham chiếu có sẵn, tìm và đánh tích chọn tùy chọn Microsoft Scripting Runtime.
Bước 4: Click chọn OK.
Các bước trên đây để cho phép tham chiếu các đối tượng FSO từ VBA.
2. Tạo một biến thể của FileSystemObjec trong mã
Sau khi đã thiết lập tham chiếu đến thư viện Scripting FileSystemObject, bước tiếp theo chúng ta cần làm là tạo một biến thể của đối tượng FSO trong mã.
Sau khi đã tạo xong, chúng ta có thể sử dụng biến thể này trong VBA.
Dưới đây là mã thiết lập biến đối tượng MyFSO làm đối tượng FileSystemObject:
Sub CreatingFSO()
Dim MyFSO As FileSystemObject
Set MyFSO = New FileSystemObject
End Sub
Trong đoạn mã trên, đầu tiên chúng ta khai báo biến MyFSO là đối tượng kiểu FileSystemObject. Chúng ta có thể làm được điều này vì ở bước trên chúng ta đã tạo tham chiếu đến thư viện Microsoft Scripting Runtime Library. Nếu tham chiếu không được tạo, khi thực hiện các bước này sẽ trả về thông báo lỗi.
Ở dòng thứ 2 có 2 trường hợp có thể xảy ra:
- Trường hợp 1: Từ khóa NEW tạo một biến thể của FileSystemObject. Điều này có nghĩa là chúng ta có thể sử dụng tất cả các phương thức của FileSystemObject để làm việc với các file và thư mục. Nếu không tạo biến thể này, chúng ta không thể truy cập các phương thức của FSO.
- Trường hợp 2: Từ khóa SET thiết lập đối tượng MyFSO vào biến thể mới của FileSystemObject. Điều này cho phép chúng ta sử dụng đối tượng này để truy cập các file và thư mục. Ví dụ, nếu muốn tạo một thư mục, chúng ta có thể sử dụng phương thức MyFSO.CreateFolder.
Ngoài ra nếu muốn, chúng ta cũng có thể kết hợp 2 lệnh trên thành một như dưới đây:
Sub CreatingFSO()
Dim MyFSO As New FileSystemObject
End Sub
Ưu điểm khi sử dụng phương pháp này (thiết lập tham chiếu đến thư viện Microsoft Scripting Runtime Library) là khi sử dụng các đối tượng FSO trong mã, chúng ta có thể sử dụng tính năng IntelliSense để hiển thị các phương thức và thuộc tính được liên kết với đối tượng (như hình dưới đây).
Điều này là không thể nếu chúng ta tạo một tham chiếu ở bên trong mã.
3. Tạo một đối tượng FSO ngay trong mã
Ngoài ra còn một cách khác để tạo tham chiếu đến FSO là thực hiện ngay trong mã. Với phương pháp này, chúng ta không cần tạo bất kỳ tham chiếu nào (giống như phương pháp ở trên).
Trong quá trình viết mã chúng ta có thể tạo một đối tượng ngay bên trong mã và tham chiếu đến Scripting.FileSystemObject.
Đoạn mã dưới đây tạo một đối tượng FSO, sau đó thiết lập đối tượng này thành kiểu FileSystemObject:
Sub FSODemo()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
End Sub
Mặc dù phương pháp này có vẻ nhanh hơn, nhưng nhược điểm lớn nhấy của phương pháp này là không hiển thị IntelliSense khi chúng ta làm việc với các đối tượng trong FSO.
https://thuthuat.taimienphi.vn/cach-kich-hoat-filesystemobject-trong-vba-46532n.aspx
Trên đây là bài viết hướng dẫn kích hoạt FileSystemObject trong VBA. Ngoài ra, bạn không nên bỏ qua những bài viết cùng chủ đề của Taimienphi.vn như:
- Tìm hiểu FileSystemObject (FSO) trong VBA phần 1
- Tìm hiểu FileSystemObject (FSO) trong VBA phần 2