Tìm hiểu FileSystemObject (FSO) trong VBA (Phần 2)

Trong bài viết Tìm hiểu FileSystemObject (FSO) trong VBA (Phần 1), Taimienphi.vn đã giới thiệu cho bạn về FileSystemObject (FSO) là gì? Cách kích hoạt FileSystemObject trong VBA như thế nào? Bài viết dưới đây Taimienohi.vn sẽ giới thiệu tiếp cho bạn một số ví dụ về FileSystemObject trong VBA.

Để dễ hình dung cách sử dụng FileSystemObject (FSO) trong VBA như thế nào, bài viết dưới đây Taimienphi.vn sẽ giới thiệu cho bạn một số ví dụ về FileSystemObject trong VBA.

tim hieu filesystemobject fso trong vba phan 2

Mục Lục bài viết:
1. Ví dụ về FileSystemObject trong VBA.
     1.1. Ví dụ 1: Kiểm tra xem các file hoặc thư mục có tồn tại hay không
     1.2. Ví dụ 2: Tạo thư mục mới trong vị trí đã chỉ định
     1.3. Ví dụ 3: Lấy danh sách tên tất cả các file trong một thư mục
     1.4. Ví dụ 4: Lấy danh sách tất cả các thư mục con trong một thư mục cụ thể
     1.5. Ví dụ 5: Sao chép file từ thư mục này sang thư mục khác
     1.6. Ví dụ 6: Sao chép tất cả các file từ thư mục này sang thư mục khác

 

1. Ví dụ về FileSystemObject trong VBA

Dưới đây là một số ví dụ để bạn dễ hình dung hơn cách sử dụng FileSystemObject trong VBA.

 

1.1 Ví dụ 1: Kiểm tra xem các file hoặc thư mục có tồn tại hay không

Đoạn mã dưới đây sẽ kiểm tra xem thư mục có tên Test có tồn tại hay không trong vị trí cụ thể đã chỉ định.

Nếu thư mục tồn tại, điều kiện IF là True và nó sẽ hiển thị thông báo "thư mục tồn tại" trong hộp thoại thông báo. Nếu thư mục không tồn tại nó sẽ hiển thị thông báo "thư mục không tồn tại".

Sub CheckFolderExist()

Dim MyFSO As FileSystemObject

Set MyFSO = New FileSystemObject

If MyFSO.FolderExists("C:\Users\sumit\Desktop\Test") Then

MsgBox "thư mục tồn tại"

Else

MsgBox "thư mục không tồn tại"

End If

End Sub

Tương tự, chúng ta cũng có thể kiểm tra xem một file có tồn tại hay không.

Đoạn mã dưới đây kiểm tra xem file có tên Test.xlsx có tồn tại trong thư mục cụ thể hay không:

Sub CheckFileExist()

Dim MyFSO As FileSystemObject

Set MyFSO = New FileSystemObject

If MyFSO.FileExists("C:\Users\sumit\Desktop\Test\Test.xlsx") Then

MsgBox "File có tồn tại"

Else

MsgBox "File không tồn tại"

End If

End Sub

 

1.2 Ví dụ 2: Tạo thư mục mới trong vị trí đã chỉ định

Đoạn mã dưới đây tạo thư mục có tên Test trong ổ C trên hệ thống (chúng ta sẽ phải chỉ định đường dẫn trên hệ thống của mình, nơi muốn tạo thư mục).

Sub taothumuc()

Dim MyFSO As FileSystemObject

Set MyFSO = New FileSystemObject

MyFSO.taothumuc ("C:\Users\sumit\Desktop\Test")

End Sub

Đoạn mã trên đây sẽ trả về thông báo lỗi trong trường hợp nếu thư mục đã tồn tại.

Đoạn mã dưới đây kiểm tra xem thư mục đã tồn tại hay chưa và tạo thư mục nếu chưa có. Trong trường hợp nếu thư mục đã tồn tại, nó sẽ hiển thị thông báo lỗi. Để kiểm tra thư mục đã tồn tại hay chưa, chúng ta sử dụng phương thức FolderExists của FSO:

Sub taothumuc()

Dim MyFSO As FileSystemObject

Set MyFSO = New FileSystemObject

If MyFSO.thu muc ton tai ("C:\Users\sumit\Desktop\Test") Then

MsgBox "thư mục đã tồn tại"

Else

MyFSO.tao thu muc ("C:\Users\sumit\Desktop\Test")

End If

End Sub

 

1.3 Ví dụ 3: Lấy danh sách tên tất cả các file trong một thư mục

Sử dụng đoạn mã dưới đây để hiển thị tên của tất cả các file trong một thư mục cụ thể:

Sub lay ten file ()

Dim MyFSO As FileSystemObject

Dim MyFile As File

Dim MyFolder As Folder

Set MyFSO = New Scripting.FileSystemObject

Set MyFolder = MyFSO.GetFolder("C:\Users\sumit\Desktop\Test")

For Each MyFile In MyFolder.Files

Debug.Print MyFile.Name

Next MyFile

End Sub

Đoạn mã này phức tạp hơn một chút so với các đoạn mã mà Taimienphi.vn đã giới thiệu ở trên.

Như đã đề cập ở trên, khi tham chiếu thư viện Microsoft Scripting Runtime Library, chúng ta có thể sử dụng FileSystemObject cũng như tất cả các đối tượng khác (như File và Folder).

Trong đoạn mã trên, chúng ta sử dụng 3 đối tượng là FileSystemObject, File và Folder. Điều này cho phép chúng ta đi qua từng file trong thư mục được chỉ định sau đó sử dụng thuộc tính name để lấy danh sách tên tất cả các file.

Lưu ý: trong đoạn mã trên chúng ta đang sử dụng Debug.Print để lấy tên của tất cả các file. Các tên này sẽ được liệt kê và hiển thị trên cửa sổ trên VB Editor.

 

1.4 Ví dụ 4: Lấy danh sách tất cả các thư mục con trong một thư mục cụ thể

Đoạn mã dưới đây sẽ hiển thị tên tất cả các thư mục con trong thư mục cụ thể được chỉ định:

Sub lay ten thu muc con ()

Dim MyFSO As FileSystemObject

Dim MyFile As File

Dim MyFolder As Folder

Dim MySubFolder As Folder

Set MyFSO = New Scripting.FileSystemObject

Set MyFolder = MyFSO.GetFolder("C:\Users\sumit\Desktop\Test")

For Each MySubFolder In MyFolder.SubFolders

Debug.Print MySubFolder.Name

Next MySubFolder

End Sub

 

1.5 Ví dụ 5: Sao chép file từ thư mục này sang thư mục khác

Đoạn mã dưới đây sao chép file từ thư mục Source sang thư mục Destination:

Sub sao chep file()

Dim MyFSO As FileSystemObject

Dim SourceFile As String

Dim DestinationFolder As String

Set MyFSO = New Scripting.FileSystemObject

SourceFile = "C:\Users\sumit\Desktop\Source\SampleFile.xlsx"

DestinationFolder = "C:\Users\sumit\Desktop\Destination"

MyFSO.CopyFile Source:=SourceFile, Destination:=DestinationFolder & "\SampleFileCopy.xlsx"

End Sub

Trong đoạn mã trên chúng ta sử dụng 2 biến SourceFile và DestinationFolder.

Trong đó, biến Source File giữ địa chỉ của file mà chúng ta muốn sao chép và biến DestinationFolder giữ địa chỉ của thư mục mà chúng ta muốn sao chép file vào.

Lưu ý: khi sao chép file, nếu chỉ cung cấp tên thư mục đích thôi là chưa đủ. Chúng ta phải chỉ định tên file, và có thể sử dụng cùng một tên file hoặc thay đổi. Trong ví dụ trên Taimienphi.vn sao chép file và đặt tên là SampleFileCopy.xlsx.

 

1.6 Ví dụ 6: Sao chép tất cả các file từ thư mục này sang thư mục khác

Đoạn mã dưới đây sao chép tất cả các file từ thư mục Source sang thư mục Destination:

Sub sao chep tat ca cac file()

Dim MyFSO As FileSystemObject

Dim MyFile As File

Dim SourceFolder As String

Dim DestinationFolder As String

Dim MyFolder As Folder

Dim MySubFolder As Folder

SourceFolder = "C:\Users\sumit\Desktop\Source"

DestinationFolder = "C:\Users\sumit\Desktop\Destination"

Set MyFSO = New Scripting.FileSystemObject

Set MyFolder = MyFSO.GetFolder(SourceFolder)

For Each MyFile In MyFolder.Files

MyFSO.CopyFile Source:=MyFSO.GetFile(MyFile), _

Destination:=DestinationFolder & "\" & MyFile.Name, Overwritefiles:=False

Next MyFile

End Sub

Lưu ý: Trong phương thức MyFSO.CopyFile, chúng ta chỉ định thuộc tính Overwritefiles là False (mặc định là True). Điều này để đảm bảo trong trường hợp nếu file đã có trong thư mục, file đó sẽ không được sao chép. Nếu xóa Overwritefiles hoặc thiết lập giá trị là False, trong trường hợp nếu có các file bị trùng trong thư mục đích có cùng tên, các file này sẽ bị ghi đè.

Nếu chỉ muốn sao chép các file của một tiện ích mở rộng cụ thể, chúng ta có thể làm được điều này bằng cách sử dụng lệnh IF Then để kiểm tra xem tiện ích mở rộng có phải là xlsx hay không.

Sub chi sao chep file Excel ()

Dim MyFSO As FileSystemObject

Dim MyFile As File

Dim SourceFolder As String

Dim DestinationFolder As String

Dim MyFolder As Folder

Dim MySubFolder As Folder

SourceFolder = "C:\Users\sumit\Desktop\Source"

DestinationFolder = "C:\Users\sumit\Desktop\Destination"

Set MyFSO = New Scripting.FileSystemObject

Set MyFolder = MyFSO.GetFolder(SourceFolder)

For Each MyFile In MyFolder.Files

If MyFSO.GetExtensionName(MyFile) = "xlsx" Then

MyFSO.CopyFile Source:=MyFSO.GetFile(MyFile), _

Destination:=DestinationFolder & "\" & MyFile.Name, Overwritefiles:=False

End If

Next MyFile

https://thuthuat.taimienphi.vn/tim-hieu-filesystemobject-fso-trong-vba-phan-2-45665n.aspx
Bài viết tìm hiểu FileSystemObject trong VBA (Phần 2) trên đây Taimienphi.vn vừa giới thiệu cho bạn một số ví dụ về FileSystemObject trong VBA. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết khác đã có trên Taimienphi.vn để tìm hiểu thêm về hàm TRIM trong Excel VBA nhé.

Tác giả: Duy Thành     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

Hàm TRIM trong Excel VBA
Sử dụng Autofilter trong VBA (Phần 2)
Hàm MsgBox trong VBA
Hàm DIR trong VBA (Phần 2)
Tất tần tật về VBA trong Excel (Phần 2)
Từ khoá liên quan:

Tìm hiểu FileSystemObject (FSO) trong VBA

, FSO trong VBA, FileSystemObject trong VBA,

SOFT LIÊN QUAN
  • VBA Line Numbers with CodeLiner

    Thêm, xóa dòng trong VBA

    VBA Line Numbers with CodeLiner là một tiện ích nhỏ gọn miễn phí được thiết kế cho Office VBA (Visual Basic for Applications). Công cụ này sẽ giúp bạn dễ dàng thêm hoặc xóa số dòng trong các dự án Office VBA.

Tin Mới

  • Cách định dạng đường viền cho bảng Excel chi tiết nhất

    Thao tác chèn bảng trên Excel vô cùng quen thuộc với bất kỳ ai khi làm việc với công cụ văn phòng. Chúng ta có thể tùy ý thiết kế giao diện, làm bảng nổi bật hơn trong nội dung bằng cách định dạng đường viền cho bảng Excel. Vậy bạn đã biết cách để định dạng đường viền cho bảng trên ứng dụng Excel chưa.

  • Cách chèn dấu ngoặc trong Excel nhanh nhất

    Nếu bạn đang sử dụng Excel muốn chèn dấu ngoặc để hoàn thiện các biểu thức toán học, đang gặp khó khăn khi không thấy dấu ngoặc. Hãy theo dõi bài viết dưới đây để có thể chèn dấu ngoặc trong Excel nhanh chóng, dễ dàng

  • Cách tạo lịch, Calendar trên Google Sheets nhanh chóng

    Cách tạo lịch trên Google Sheets giúp bạn đọc dễ dàng tạo ra một bảng tính bao gồm các ngày tháng năm để điền các thông tin quan trọng, tạo lời nhắc cho bản thân. Việc tạo lịch trên Google Sheets sẽ hỗ trợ bạn đọc rất nhiều trong công việc giúp bạn sắp xếp công việc, lịch hẹn dễ dàng hơn.

  • Mã lệnh GTA 5, cheat code GTA V đầy đủ cho PC, PS, Xbox

    Tận dụng sức mạnh của mã lệnh trong GTA 5 để thay đổi hoàn toàn cách bạn chơi. Với hàng trăm mã lệnh khác nhau, bạn có thể có được tất cả các loại vũ khí, phương tiện và nguyên liệu cần thiết để thành công trong thế giới tội phạm này. Khám phá và trải nghiệm sự mạnh mẽ của các mã lệnh trong GTA 5 ngay hôm nay.