Mặc định, FileSystemObject không tồn tại trong VBA Excel. Trong trường hợp bạn xử lý file và thư mục bên ngoài ứng dụng Excel, bước quan trọng là tạo 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
Bí quyết kích hoạt FileSystemObject trong VBA
Có 2 phương pháp để kích hoạt và bắt đầu sử dụng FileSystemObject trong VBA:
Phương pháp 1: Thiết lập tham chiếu đến Microsoft Scripting Runtime Library (Scrrun.dll).
Phương pháp 2: Tạo một đối tượng để trực tiếp tham chiếu thư viện từ mã nguồn.
Mặc dù cả hai phương pháp đều hoạt động tốt, nhưng Mytour khuyến nghị ưu tiên sử dụng phương pháp thứ nhất.
Chú ý: Khi kích hoạt FileSystemObject, chúng ta có thể truy cập mọi đối tượng bên trong, bao gồm FileSystemObject, Drive, Files, Folders.... .
1. Liên kết đến Microsoft Scripting Runtime Library (Scrrun.dll)
Khi tạo một liên kết đến thư viện Scripting Runtime Library, VBA có thể truy cập toàn bộ thuộc tính và phương thức của file và thư mục.
Sau khi hoàn thành, chúng ta có thể truy cập các đối tượng file/folder/driver ngay trong VBA, giống như khi chúng ta tham chiếu các ô, bảng tính, ...
Làm theo các bước dưới đây để thiết lập tham chiếu đến Microsoft Scripting Runtime Library:
Bước 1: Trong trình chỉnh sửa VB, nhấp chọn Công cụ.
Bước 2: Nhấp chọn Tham chiếu.
Bước 3: Trong hộp thoại References, lướt qua các tham chiếu có sẵn, tìm và đánh dấu chọn tùy chọn Microsoft Scripting Runtime.
Bước 4: Nhấp chọn OK.
Thực hiện những bước trên để kích hoạt tham chiếu đến đối tượng FSO từ VBA.
2. Tạo một biến thể của FileSystemObject trong mã nguồn
Sau khi đã tạo tham chiếu đến thư viện Scripting FileSystemObject, bước tiếp theo là tạo một biến thể của đối tượng FSO trong mã.
Khi đã tạo xong, bạn có thể sử dụng biến thể này trong VBA.
Dưới đây là đoạn mã thiết lập biến đối tượng MyFSO làm đối tượng FileSystemObject:
Sub CreatingFSO()
Khai báo biến MyFSO làm đối tượng FileSystemObject.
Tạo một biến thể mới của FileSystemObject với câu lệnh Set MyFSO = New FileSystemObject.
Kết thúc đoạn mã với lệnh End Sub.
Trong đoạn mã này, chúng ta đầu tiên khai báo biến MyFSO làm đối tượng FileSystemObject. Việc này có thể thực hiện vì ở bước trước, đã tạo tham chiếu đến thư viện Microsoft Scripting Runtime Library. Nếu tham chiếu không tạo, các bước này sẽ gây lỗi.
Ở dòng thứ 2, có 2 tình huống có thể xảy ra:
- Tình huống 1: Từ khóa NEW sẽ 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 để thao tác với file và thư mục. Nếu không tạo biến thể này, chúng ta sẽ không thể truy cập các phương thức của FSO.
- Tình huống 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 file và thư mục. Ví dụ, để 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 cả hai lệnh như sau:
Sub TạoFSO()
Dim MyFSO As New FileSystemObject
End Sub
Một ưu điểm của 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ã, ta có thể tận dụng tính năng IntelliSense để hiển thị các phương thức và thuộc tính liên quan đến đối tượng (như minh họa dưới đây).
Không thể thực hiện điều này nếu ta tạo một tham chiếu trong mã nguồn.
3. Tạo đối tượng FSO trực tiếp trong mã
Cách khác để tham chiếu đến FSO là thực hiện ngay trong mã mà không cần tạo tham chiếu ngoại. Phương pháp này giống nhưng không yêu cầu bất kỳ tham chiếu nào.
Trong quá trình viết mã, chúng ta có thể tạo một đối tượng ngay trong mã và tham chiếu đến Scripting.FileSystemObject.
Dưới đây là đoạn mã tạo một đối tượng FSO và thiết lập nó thành kiểu FileSystemObject:
Sub MauFSO()
Dim MauFSO As Object
Set MauFSO = CreateObject('Scripting.FileSystemObject')
Kết thúc
Mặc dù phương pháp này có vẻ nhanh hơn, tuy nhiên điều đáng chú ý là không hiển thị IntelliSense khi làm việc với các đối tượng trong FSO.
Dưới đây là hướng dẫn bật FileSystemObject trong VBA. Ngoài ra, đừng bỏ lỡ các bài viết khác của Mytour như:
- Khám phá FileSystemObject (FSO) trong VBA phần 1
- Khám phá FileSystemObject (FSO) trong VBA phần 2