Hướng dẫn này sẽ trình bày cách sử dụng các phương thức GetFolder và GetFile của FileSystemObject.
Nhận thuộc tính thư mục và tệp với VBA FileSystemObject
Phương thức GetFolder trả về một đối tượng Thư mục tương ứng với thư mục trong một đường dẫn được chỉ định và cho phép bạn truy cập các thuộc tính của nó. Phương thức GetFile thực hiện tương tự với tệp được chỉ định.
Đặt tham chiếu VBA
Đầu tiên, khi sử dụng FileSystemObjects, bạn có thể phải đặt tham chiếu đến thư viện thời gian chạy tập lệnh VB: mở Visual Basic Editor (ALT + F11), chọn Công cụ> Tham chiếu từ trình đơn thả xuống và đánh dấu vào hộp kiểm 'Microsoft Scripting Runtime'.
FileSystemObject
Thứ hai, bạn phải tạo FileSystemObject:
12 | Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject") |
Bây giờ bạn có quyền truy cập vào GetFolder và các Phương thức FileSystemObject khác.
Sử dụng phương pháp GetFolder
Sau khi chỉ định thư mục bạn muốn truy cập
1 | Đặt fld = FSO.GetFolder ("C: \ Src \") |
bạn có thể sao chép nó:
1 | fld.Copy "C: \ NewFolder \" |
di chuyển nó:
1 | fld.Move "C: \ NewFolder \" |
xóa đi:
1 | fld.Delete |
hoặc tạo một tệp văn bản mới trong đó:
1 | fld.CreateTextFile “NewTextFile.txt" |
Bằng cách sử dụng phương pháp này, bạn có quyền truy cập vào các thuộc tính của thư mục như thuộc tính của nó (fld.Attributes), ngày và giờ khi nó được tạo (fld.DateCreate), truy cập lần cuối (fld.DateLastAccessed), sửa đổi lần cuối (fld.DateLastModified ), ký tự ổ đĩa của nó (fld.Drive), tên và tên viết tắt của nó (fld.Name, fld.ShortName), đường dẫn và đường dẫn ngắn (fld.Path, fld.ShortPath), kích thước (fld.Size), gõ (fld.Type), thư mục mẹ của nó (fld.ParentFolder), kiểm tra xem nó có phải là thư mục gốc (fld.IsRootFolder) hay bạn có thể lặp qua, đếm, v.v. các tệp của nó (fld.Files) hoặc thư mục con (fld. Thư mục con).
Đặt tất cả những điều này lại với nhau trong một quy trình sẽ trông như thế này:
123456789101112131415161718192021222324 | FSOGetFolder phụ ()Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt fld = FSO.GetFolder ("C: \ Src \")Debug.Print fld.DateCreateDebug.Print fld.DriveDebug.Print fld.NameDebug.Print fld.ParentFolderDebug.Print fld.PathDebug.Print fld.ShortPathDebug.Print fld.SizeDebug.Print fld.Files.CountDebug.Print fld.TypeĐối với từng phần trong fld.SubFoldersDebug.Print gấp.NameGấp tiếp theoĐối với từng fil Trong fld.FilesDebug.Print fil.NameFil tiếp theoKết thúc Sub |
Xin lưu ý rằng bạn sẽ nhấn Ctrl + G để xem kết quả của lệnh Debug.Print trong cửa sổ VBA ngay lập tức.
Phương thức GetParentFolderName
Ngoài cách được đề cập ở trên, bạn có thể truy cập vào tên thư mục mẹ của thư mục bằng cách sử dụng mã sau:
1234 | Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")ParentFold = FSO.GetParentFolderName ("C: \ ParentTest \ Test \") |
Trong trường hợp này, ParentFold sẽ là “C: \ ParentTest \”.
Xin lưu ý rằng phương pháp này sẽ không giải quyết đường dẫn, cũng như không kiểm tra sự tồn tại của đường dẫn được chỉ định.
Phương thức GetSpecialFolder
Với phương thức GetSpecialFolder, bằng cách chuyển 0, 1 hoặc 2 làm đối số, bạn có thể lấy đường dẫn thư mục Windows (với các tệp được cài đặt bởi hệ điều hành Windows), đường dẫn thư mục hệ thống của bạn (với thư viện, phông chữ và trình điều khiển thiết bị) và tạm thời đường dẫn thư mục (thư mục được sử dụng để lưu trữ các tệp tạm thời), tương ứng.
1234567 | Sub FSOGetSpecialFolder ()Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Debug.Print FSO.GetSpecialFolder (0) ‘Kết quả có thể là: C: \ Windows \ System32Kết thúc Sub |
Phương thức GetFile
Bạn có thể sử dụng phương thức GetFile theo cách tương tự như phương thức GetFolder. Sau khi chỉ định tệp bạn muốn truy cập
1 | Đặt fil = FSO.GetFile ("C: \ Src \ Test.xlsx") |
bạn có thể sao chép nó:
1 | fil.Copy "C: \ Dst \" |
di chuyển nó:
1 | fil.Move "C: \ Dst \" |
xóa đi:
1 | fil.Delete |
hoặc mở nó dưới dạng đối tượng TextStream:
1 | fil.OpenAsTextStream |
Các thuộc tính của tệp như thuộc tính, ngày và giờ khi nó được tạo, truy cập lần cuối hoặc sửa đổi lần cuối, ký tự ổ đĩa, tên và tên viết tắt, đường dẫn và đường dẫn ngắn, kích thước, loại và thư mục mẹ của nó có thể được truy cập theo cùng một cách như được mô tả tại phương pháp GetFolder.