Sử dụng FileSystemObject (FSO) trong Excel VBA
FileSystemObject (FSO) cung cấp cho bạn quyền truy cập vào một loạt các chức năng để truy cập vào hệ thống tệp của máy tính của bạn. Sử dụng đối tượng này, bạn có thể dễ dàng truy cập các tệp, thư mục và ổ đĩa cũng như đọc và ghi vào tệp.
Nhiều hàm FSO có thể được viết bởi bạn bằng VBA truyền thống, nhưng sẽ yêu cầu nhiều mã hóa hơn và sẽ khó khăn hơn cho một nhà phát triển sắp tới để duy trì và hiểu. FSO là một API (Giao diện Lập trình Ứng dụng) đã được thử và kiểm tra và đáng tin cậy hơn mã của riêng bạn. Nó rất dễ sử dụng và sẵn sàng và có sẵn.
FSO hoạt động theo các tiêu chuẩn và cài đặt quốc tế mà bạn có trên máy tính của mình. Nếu bạn đang phân phối ứng dụng Excel của mình trên toàn cầu thì việc sử dụng FSO sẽ quan tâm đến bất kỳ sự khác biệt nào trong cài đặt giữa các quốc gia, điều mà mã của riêng bạn sẽ gặp khó khăn khi thực hiện.
FSO sẽ cho phép bạn thực hiện hầu hết mọi thứ trong mã VBA mà bạn có thể làm trong Windows File Explorer. Nó cung cấp cho bạn quyền truy cập đầy đủ vào hệ thống tệp Windows.
Tạo một FileSystemObject
FileSytemObject không phải là một phần của Excel VBA. Bạn có thể sử dụng FSO bằng cách tạo một đối tượng (liên kết muộn) trong VBA:
123 | Sub CreateFSO ()Đặt MyFSO = CreateObject ("Scripting.FileSystemObject")Kết thúc Sub |
Ngoài ra, bạn có thể thêm một tham chiếu vào VBA cho thư viện FSO. Đây được gọi là liên kết sớm và nó nhanh hơn liên kết muộn, vì đối tượng không phải được tạo khi mã của bạn được chạy.
Để thêm tham chiếu, bạn cần nhấn Alt-F11 để vào Visual Basic Editor (VBE), rồi sử dụng ‘Tools | References’ từ menu VBE. Thao tác này sẽ hiển thị một cửa sổ bật lên để bạn chọn tài liệu tham khảo có liên quan (xem bên dưới).
Cuộn xuống danh sách các tham chiếu có sẵn cho đến khi bạn có thể thấy ‘Microsoft Scripting Runtime’. Đánh dấu vào hộp và nhấp vào OK, và thư viện bây giờ là một phần của ứng dụng của bạn.
Vị trí của tệp thư viện DLL là C: \ Windows \ SysWOW64 \ scrrun.dll
Nếu bạn đang phân phối ứng dụng của mình cho các đồng nghiệp hoặc vị trí khác, điều cần thiết là họ phải có tệp này ở đúng vị trí trên máy tính của họ, nếu không mã của bạn sẽ bị lỗi.
Bạn nên đặt bẫy lỗi đối với sự kiện ‘WorkbookOpen’ bằng cách sử dụng lệnh Dir để kiểm tra xem tệp có tồn tại hay không. Nếu nó vắng mặt, sau đó đưa ra thông báo cảnh báo và đóng tệp Excel.
Sau khi tham chiếu đã được thêm, bạn có thể sử dụng mã sau để tạo FSO:
123 | Sub TestFSO ()Làm mờ MyFSO dưới dạng FileSystemObject mớiKết thúc Sub |
Tất cả các ví dụ trong bài viết này sẽ sử dụng phương pháp luận này để tạo FSO.
FSO có sẵn nhiều phương pháp và thuộc tính. Chúng được chia ở đây thành các phần tùy theo những gì chúng có thể làm.
Sử dụng các phương thức 'tồn tại'
Bạn có thể sử dụng phương pháp FSO để kiểm tra xem ổ đĩa, thư mục hoặc tệp có tồn tại hay không. Các phương pháp này rất dễ sử dụng và chỉ yêu cầu một tham số.
123456 | Kiểm tra phụ ()Làm mờ MyFSO dưới dạng FileSystemObject mớiMsgBox MyFSO.DriveExists ("C:")MsgBox MyFSO.FolderExists ("C: \ temp \")MsgBox MyFSO.FileExists ("C: \ temp \ testfile.txt")Kết thúc Sub |
Tất cả các câu lệnh này sẽ trả về ‘True’ giả sử rằng máy tính của bạn có ổ C:, một thư mục trên đó có tên là ‘Temp’ và một tệp trong thư mục Temp có tên là ‘testfile.txt’.
Các chuỗi văn bản trong các tham số không phân biệt chữ hoa chữ thường. Bạn không thể sử dụng ký tự đại diện trong bất kỳ phương pháp nào trong số này.
Bạn cũng không thể sử dụng URL (Bộ định vị tài nguyên đồng nhất) để mô tả vị trí thư mục hoặc tệp. FSO hoạt động hoàn toàn trên Hệ điều hành Windows và hệ thống tệp trên đó. Đối với vị trí máy chủ bên ngoài, trước hết bạn cần ánh xạ ổ đĩa tới vị trí này, sau đó sử dụng chính đường dẫn ổ đĩa đó.
Sử dụng các phương pháp 'Nhận'
FSO có nhiều phương pháp để lấy thông tin về tệp và đường dẫn, hoặc tách đường dẫn và tệp, hoặc lấy thông tin tệp hoặc thư mục như ngày tạo hoặc ngày sửa đổi.
GetAbsolutePathname
Điều này sẽ cung cấp một đường dẫn hoàn chỉnh từ gốc của ổ đĩa được chỉ định.
Cú pháp là:
GetAbsolutePathName (pathspec)
12345 | Sub AbsolutePath ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "c:…"MsgBox MyFSO.GetAbsolutePathName (Pth)Kết thúc Sub |
Điều này sẽ trả về một chuỗi ‘C: \ Users \ Richard \ Documents’. Điều này là do đường dẫn đã được chỉ định là C: theo sau là dấu ba chấm. Mỗi dấu chấm biểu thị một cấp độ tiếp theo trong cấu trúc thư mục.
GetBaseName
Điều này trả về tên của một tệp hoặc thư mục được chỉ định.
Cú pháp là:
GetBaseName(con đường)
12345 | Tên cơ sở phụ ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetBaseName (Pth)Kết thúc Sub |
Mã này sẽ trả về ‘testfile’. Phương thức trả về phần cuối cùng trong tên đường dẫn. Nếu nó là một tệp, thì nó không trả về hậu tố tệp.
Nếu không tìm thấy đường dẫn thì một chuỗi trống sẽ được trả về.
GetDrive
Điều này cho phép bạn sử dụng mã để truy cập thông tin ổ đĩa, dựa trên ký tự ổ đĩa được chỉ định.
Cú pháp là:
GetDrive (drivepec)
123456 | Sub DriveInfo ()Dim MyFSO As New FileSystemObject, Pth As String, Dr As DrivePth = "C:"Đặt Dr = MyFSO.GetDrive (Pth)MsgBox Dr.FreeSpaceKết thúc Sub |
Phương thức này trả về một đối tượng ổ đĩa dựa trên ổ đĩa được chỉ định. Bạn có thể sử dụng đối tượng này để truy cập thông tin về ổ đĩa, chẳng hạn như dung lượng trống có sẵn.
Bạn mệt mỏi với việc tìm kiếm ví dụ về mã VBA? Hãy thử AutoMacro!
GetDriveName
Phương thức này sẽ tách tên ổ đĩa khỏi chuỗi đường dẫn / tên tệp.
Cú pháp là:
GetDriveName (con đường)
12345 | Sub DriveName ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetDriveName (Pth)Kết thúc Sub |
Điều này sẽ trả về ‘C:’
GetExtensionName
Điều này sẽ trả về hậu tố tệp trong đường dẫn được chỉ định.
Cú pháp là:
GetExtensionName (con đường)
12345 | Sub ExtensionName ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetExtensionName (Pth)Kết thúc Sub |
Điều này sẽ trả về ‘txt’.
Nếu không có tệp nào được chỉ định, thì một chuỗi trống sẽ được trả về.
Có được file
Phương thức này trả về một đối tượng tệp, đối tượng này chứa nhiều thông tin khác nhau về chính tệp đó.
Cú pháp là:
Có được file (filespec)
123456 | Sub FileInfo ()Làm mờ MyFSO dưới dạng FileSystemObject mới, Pth dưới dạng chuỗi, Fn dưới dạng tệpPth = "C: \ temp \ testfile.txt"Đặt Fn = MyFSO.GetFile (Pth)MsgBox Fn.DateCreateKết thúc Sub |
Thao tác này sẽ trả về ngày và giờ mà tệp đã chỉ định được tạo. Nếu không có tệp nào được chỉ định hoặc tệp không tồn tại, bạn sẽ gặp lỗi "không tìm thấy tệp".
12345 | Tên tệp phụ ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetFileName (Pth)Kết thúc Sub |
Điều này sẽ trả về ‘testfile.txt’.
GetFolder
Điều này tạo một đối tượng thư mục cho thư mục cơ sở trong đường dẫn được chỉ định. Đường dẫn chỉ được chứa tên thư mục. Không có tên tệp nào phải được bao gồm nếu không sẽ xảy ra lỗi.
Cú pháp là:
GetFolder (thư mụcpec)
123456 | Thư mục conInfo ()Làm mờ MyFSO dưới dạng FileSystemObject mới, Pth dưới dạng chuỗi, Fo dưới dạng thư mụcPth = "C: \ temp"Đặt Fo = MyFSO.GetFolder (Pth)MsgBox Fo.DateCreateKết thúc Sub |
Đối tượng thư mục có nhiều thông tin khác nhau có thể được truy cập. Trong trường hợp này, nó trả về ngày mà thư mục được tạo.
Bạn cũng có thể sử dụng phương pháp này để truy xuất tất cả các tên tệp trong một thư mục nhất định:
12345678 | Tên tệp phụ ()Làm mờ MyFSO dưới dạng FileSystemObject mới, Pth dưới dạng chuỗi, Fo dưới dạng thư mục, Fn dưới dạng tệpPth = "C: \ temp"Đặt Fo = MyFSO.GetFolder (Pth)Đối với mỗi Fn trong Fo.FilesMsgBox Fn.NameFn tiếp theoKết thúc Sub |
Mã này sẽ lặp lại qua thư mục ‘Temp’ và hiển thị từng tên tệp được tìm thấy.
GetParentFolderName
Phương thức này sẽ trả về tên thư mục trong cấp độ tiếp theo trong hệ thống phân cấp thư mục.
Cú pháp là:
GetParentFolderName (con đường)
12345 | Tên thư mục con ()Làm mờ MyFSO dưới dạng FileSystemObject mới, Pth dưới dạng chuỗi, Fo dưới dạng thư mụcPth = "C: \ users \ richard"MsgBox MyFSO.GetParentFolderName (Pth)Kết thúc Sub |
Điều này sẽ trả về ‘Người dùng’ vì đây là ‘cha’ cho thư mục ‘richard’.
Lập trình VBA | Code Generator làm việc cho bạn!
Sử dụng các phương pháp 'Tạo'
Với FSO, bạn có thể tạo một thư mục và đường dẫn mới và tạo một tệp văn bản.
Tạo thư mục
Bạn có thể chỉ định tên đường dẫn thư mục mới sẽ được tạo. Một điều nguy hiểm của điều này là nếu thư mục đã tồn tại, thì lỗi sẽ xảy ra. Bạn có thể sử dụng phương pháp ‘FolderExists’ để đảm bảo rằng điều này sẽ không xảy ra.
Cú pháp là:
Tạo thư mục(tên thư mục)
1234567 | Sub CreateNewFolder ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ MyFolder"Nếu MyFSO.FolderExists (Pth) = Sai thìMyFSO.CreateFolder (Pth)Kết thúc nếuKết thúc Sub |
Đoạn mã này sẽ tạo một thư mục mới có tên là ‘MyFolder’ theo đường dẫn hiện có ‘C: \ temp’.
CreateTextFile
Phương pháp này cho phép bạn tạo một tệp văn bản đơn giản và ghi trực tiếp vào đó.
Cú pháp là:
CreateTextFile (tên tập tin, [ ghi đè lên, [ unicode ]])
1234567 | Sub CreateTextFile ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ Myfile.txt"Đặt Fn = MyFSO.CreateTextFile (Pth, True)Fn.Write "Thêm văn bản của riêng tôi vào đây" & vbLf & "Đây là dòng thứ hai"Fn.CloseKết thúc Sub |
Mã này tạo một tệp văn bản có tên là ‘Myfile.txt’ trong thư mục ‘Temp’ của ổ ‘C:’ và sau đó ghi hai dòng văn bản vào đó.
Lưu ý rằng một ký tự nguồn cấp dữ liệu dòng được nối với chuỗi đang được viết.
Nếu đường dẫn mà bạn đang viết không tồn tại thì lỗi sẽ xảy ra. Bạn có thể sử dụng phương pháp ‘FolderExists’ để kiểm tra điều này trước khi tạo tệp.
Có một tham số tùy chọn để ghi đè lên tệp hiện có nếu được yêu cầu - điều này có thể là Đúng hoặc Sai. Mặc định là đúng.
Sử dụng các phương pháp ‘Sao chép’
Bạn có thể sử dụng các phương pháp này để sao chép một tệp hoặc một thư mục sang một vị trí khác.
Lập trình VBA | Code Generator làm việc cho bạn!
CopyFile
Phương pháp này sẽ sao chép một tệp từ vị trí thư mục này sang vị trí thư mục khác. Lưu ý rằng bản sao sẽ không thành công nếu vị trí đích có bộ thuộc tính chỉ đọc.
Cú pháp là:
CopyFile nguồn, điểm đến, [ ghi đè lên ]
1234 | Sub CopyFile ()Làm mờ MyFSO dưới dạng FileSystemObject mớiMyFSO.CopyFile "C: \ temp \ *. Txt", "C: \ temp \ myfolder \", TrueKết thúc Sub |
Mã này sẽ tạo một bản sao của tất cả các tệp văn bản (txt) tại ‘C: \ temp’ thành ‘C: \ temp \ myfolder \’, ghi đè lên tệp khi cần thiết. Cài đặt mặc định cho Ghi đè là Đúng.
Bạn có thể sử dụng ký tự đại diện dấu hoa thị (*) cho tên tệp, nhưng bạn không thể sử dụng ký tự đại diện dấu hỏi (?) Để đại diện cho các ký tự đơn lẻ.
Sao chép các tệp tin
Bạn có thể sử dụng phương pháp này để sao chép toàn bộ thư mục từ vị trí này sang vị trí khác.
Cú pháp là:
Sao chép các tệp tin nguồn, điểm đến, [ ghi đè lên ]
1234 | Sub CopyFolder ()Làm mờ MyFSO dưới dạng FileSystemObject mớiMyFSO.CopyFolder "C: \ temp \ *", "C: \ users \ richard \"Kết thúc Sub |
Mã này sao chép tất cả các thư mục và tệp bên dưới ‘C: \ temp’ vào ‘C: \ users \ richard’. Thư mục mới được tạo sẽ là ‘C: \ users \ richard \ myfolder’ vì ‘C: \ temp’ có một thư mục bên trong nó được gọi là ‘myfolder’.
Có bốn kết quả có thể xảy ra khi sử dụng phương pháp này:
- Nếu đích không tồn tại, thì thư mục nguồn và nội dung sẽ được sao chép.
- Nếu đích đã tồn tại, thì sẽ xảy ra lỗi.
- Nếu đích là một thư mục, thì thư mục nguồn và nội dung của nó sẽ được sao chép. Lỗi sẽ xảy ra nếu Ghi đè được đặt thành Sai và đã có một bản sao của tệp trong đích.
- Nếu đích được đặt thành chỉ đọc, sẽ xảy ra lỗi nếu ghi đè được đặt thành false.
Phương pháp này dừng lại ở lỗi đầu tiên mà nó gặp phải. Không có bất kỳ hành động nào đã thành công trước khi lỗi xảy ra.
Sử dụng các phương pháp 'Di chuyển'
Các phương pháp này có thể được sử dụng để di chuyển tệp hoặc thư mục đến các vị trí khác. Điều này cũng giống như việc cắt từ một vị trí và dán vào một vị trí khác. Lưu ý rằng nếu tệp được di chuyển đang mở, thì phương pháp Di chuyển sẽ không thành công với một lỗi.
Di chuyển tệp tin
Phương pháp này được sử dụng để di chuyển một tệp cụ thể đến một vị trí khác. Các ký tự đại diện được phép trong thành phần đường dẫn cuối cùng của nguồn.
Cú pháp là:
Di chuyển tệp tin nguồn, điểm đến
1234 | Sub MoveAFile ()Làm mờ MyFSO dưới dạng FileSystemObject mớiMyFSO.MoveFile "C: \ temp \ *", "C: \ temp \ myfolder"Kết thúc Sub |
Mã này di chuyển tất cả các tệp được tìm thấy tại ‘C: \ temp’ thành ‘C: \ temp \ myfolder’.
Các thư mục nguồn và đích phải tồn tại, vì thư mục đích không tự động được tạo.
Phương pháp này dừng lại ở lỗi đầu tiên mà nó gặp phải. Không có bất kỳ hành động nào đã thành công trước khi lỗi xảy ra.
Lập trình VBA | Code Generator làm việc cho bạn!
Di chuyển thư mục
Phương pháp này di chuyển một thư mục cụ thể từ vị trí này sang vị trí khác.
Cú pháp là:
Di chuyển thư mục (nguồn, điểm đến)
1234 | Sub MoveAFolder ()Làm mờ MyFSO dưới dạng FileSystemObject mớiMyFSO.MoveFolder "C: \ temp \ myfolder", "C: \ temp \ mydestination"Kết thúc Sub |
Mã này di chuyển thư mục ‘myfolder’ và nội dung vào thư mục ‘mydestination’. ‘Myfolder’ bị xóa hiệu quả và ‘mydestination’ được tạo cùng với nội dung từ ‘myfolder’.
Nếu thư mục đích đã tồn tại thì sẽ xảy ra lỗi.
Sử dụng các phương pháp ‘Xóa’
Các phương pháp này được sử dụng để xóa tệp hoặc thư mục. Chúng phải được sử dụng cẩn thận vì không có phương pháp khôi phục hoặc hoàn tác nếu có gì sai.
Xóa tài liệu
Thao tác này sẽ xóa các tệp riêng lẻ hoặc một nhóm tệp sử dụng ký tự đại diện.
Cú pháp là:
Xóa tài liệu filespec, [ lực lượng ]
1234 | Sub DeleteFiles ()Làm mờ MyFSO dưới dạng FileSystemObject mớiMyFSO.DeleteFile "C: \ temp \ *"Kết thúc Sub |
Mã này sẽ xóa tất cả các tệp trong thư mục ‘C: \ temp’
Tham số Force là tùy chọn và được đặt thành True hoặc False. Nếu nó được đặt thành True, thì các tệp chỉ đọc sẽ bị xóa. Mặc định này sai.
Xóa thư mục
Phương pháp này xóa một thư mục cụ thể và nội dung của nó.
Cú pháp là:
Xóa thư mục thư mụcpec, [ lực lượng ]
1234 | Sub DeleteFolders ()Làm mờ MyFSO dưới dạng FileSystemObject mớiMyFSO.DeleteFolder "C: \ temp \ MyDestination"Kết thúc Sub |
Mã này sẽ xóa thư mục ‘MyDestination’ và tất cả các tệp trong thư mục đó. Thư mục ‘tạm thời’ sẽ vẫn còn.
Tham số Force là tùy chọn và được đặt thành True hoặc False. Nếu nó được đặt thành True, thì các thư mục chỉ đọc sẽ bị xóa. Mặc định này sai.
Các ký tự đại diện có thể được sử dụng trong thành phần cuối cùng của đường dẫn. Nếu thư mục không được tìm thấy thì sẽ xảy ra lỗi.
Phương pháp này dừng lại ở lỗi đầu tiên mà nó gặp phải. Không có bất kỳ hành động nào đã thành công trước khi lỗi xảy ra.
Lập trình VBA | Code Generator làm việc cho bạn!
Các phương pháp khác trong FSO
OpenAsTextStream.
Phương thức này mở một tệp được chỉ định dưới dạng đối tượng Dòng văn bản và cho phép đọc hoặc ghi tệp đó vào. Ưu điểm của phương pháp này là có thể mở bất kỳ loại tệp nào và trích xuất văn bản có sẵn.
Cú pháp là:
OpenAsTextStream ([ iomode, [ định dạng ]])
Tham số ‘iomode’ cho phép chỉ đọc (1), đọc / ghi (2) và thêm vào (8). Tham số đọc / ghi ghi đè lên tệp.
Tham số ‘format’ được đặt thành -2 cho mặc định của hệ thống, -1 để mở tệp dưới dạng Unicode và 0 để mở tệp dưới dạng ASCII (Mã tiêu chuẩn Hoa Kỳ cho trao đổi thông tin).
1234567891011 | Sub TextStream ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt f = MyFSO.GetFile ("C: \ temp \ myfile.txt")Đặt ts = f.OpenAsTextStream (2)ts.Viết "Văn bản mới của tôi"ts.CloseĐặt ts = f.OpenAsTextStream (1)s = ts.ReadLineMsgBox sts.CloseKết thúc Sub |
Mã này lấy một tệp văn bản hiện có và tạo nó dưới dạng một đối tượng bằng phương thức ‘GetFile’. Sau đó, nó sẽ mở luồng văn bản dưới dạng đọc / ghi (2) và viết một dòng văn bản. Sau đó, tệp được đóng và mở lại dưới dạng đọc (1) và một dòng được đọc từ tệp, sau đó được hiển thị dưới dạng hộp thông báo.
Lưu ý rằng dòng đọc phải được đặt trong một biến trước khi nó có thể được hiển thị trong hộp thông báo.
BuildPath
Phương pháp này sẽ nối một thư mục hoặc tên tệp vào cuối đường dẫn thư mục hiện có. Thao tác này chỉ tạo một chuỗi văn bản và không thực sự tạo thư mục mới.
Cú pháp là:
BuildPath (con đường, Tên)
12345 | Sub BuildPth ()Làm mờ MyFSO dưới dạng FileSystemObject mớinp = MyFSO.BuildPath ("C: \ temp", "ANewFolder")MsgBox npKết thúc Sub |
Điều này sẽ hiển thị ‘C: \ temp \ ANewFolder’. Tuy nhiên, nếu bạn muốn thực sự sử dụng thư mục này, bạn cần sử dụng phương thức ‘CreateFolder’.
OpenTextFile
Phương pháp này cho phép các tệp được mở và đọc từ hoặc ghi theo các tham số đã thiết lập. Nó hoạt động theo cách tương tự như phương thức OpenAsTextStream.
Cú pháp là:
OpenTextFile (tên tập tin, [ iomode, [ tạo ra, [ định dạng ]]])
Tham số ‘iomode’ cho phép ForReading, ForWriting và ForAppending. Tham số ForWriting ghi đè lên tệp.
Tham số ‘create’ là một giá trị Boolean. Đúng nghĩa là một tệp mới sẽ được tạo nếu tên tệp được chỉ định không tồn tại. Sai có nghĩa là không có tệp nào được tạo nếu không tìm thấy tên tệp. Mặc định này sai.
Tham số ‘format’ có thể được đặt thành TristateFalse, TristateMixed, TristateTrue và TristateUseDefault tùy thuộc vào việc tệp là ASCII hay Unicode.
1234567 | Sub OpenTxtFile ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt ts = MyFSO.OpenTextFile ("C: \ temp \ myfile.txt", ForReading, False, TristateUseDefault)s = ts.ReadLineMsgBox sts.CloseKết thúc Sub |
Mã này sẽ đọc một dòng từ tệp văn bản ‘myfile.txt’.
Một lợi thế mà phương thức OpenTextFile có so với OpenAsTextStreamMethod là nó có các tham số thả xuống, điều này có ý nghĩa hơn việc cố gắng nhớ các giá trị số thích hợp cho các tùy chọn tham số khác nhau.
Lập trình VBA | Code Generator làm việc cho bạn!
Thuộc tính của FSO
Ổ đĩa
Thuộc tính này chứa một bộ sưu tập các ổ đĩa có sẵn trên máy tính của bạn.
1234567 | Sub Drv ()Làm mờ MyFSO dưới dạng FileSystemObject mới, d Như DriveĐặt Dr = MyFSO.DrivesĐối với mỗi d Trong DrMsgBox d.DriveLetterTiếp theo dKết thúc Sub |
Mã này sẽ trả về từng ký tự ổ đĩa có sẵn trên máy tính của bạn.
Tên
Điều này trả về tên của một tệp hoặc thư mục được chỉ định.
123456789 | Tên phụVí dụ ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt f = MyFSO.GetFile ("C: \ temp \ myfile.txt")i = f.Name & "trên Drive" & UCase (f.Drive) & vbCrLfi = i & "Created:" & f.DateCreate & vbCrLfi = i & "Truy cập lần cuối:" & f.DateLastAccessed & vbCrLfi = i & "Last Modified:" & f.DateLastModifiedMsgBox iKết thúc Sub |
Mã này sẽ cung cấp tên của tệp và thông tin về tệp bằng thuộc tính Drive.
Con đường
Thuộc tính Path sẽ tách đường dẫn ra khỏi đặc tả tệp.
123456789 | Đường dẫn phụExample ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt f = MyFSO.GetFile ("C: \ temp \ myfile.txt")i = f.Path & f.Name & "trên Drive" & UCase (f.Drive) & vbCrLfi = i & "Created:" & f.DateCreate & vbCrLfi = i & "Truy cập lần cuối:" & f.DateLastAccessed & vbCrLfi = i & "Last Modified:" & f.DateLastModifiedMsgBox iKết thúc Sub |
Ví dụ này hoạt động theo cách tương tự như ví dụ Tên, ngoại trừ việc bây giờ nó cung cấp đường dẫn cho tệp.
Lập trình VBA | Code Generator làm việc cho bạn!
Kích thước
Thuộc tính Size sẽ cung cấp kích thước của một thư mục hoặc một tệp.
12345 | FSize phụ ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt f = MyFSO.GetFolder ("C: \ temp \")MsgBox f.SizeKết thúc Sub |
Đoạn mã trên sẽ trả về kích thước của thư mục ‘C: \ temp \’.
12345 | FSize phụ ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt f = MyFSO.GetFile ("C: \ temp \ myfile.txt")MsgBox f.SizeKết thúc Sub |
Đoạn mã trên sẽ trả về kích thước của tệp ‘myfile.txt’.
Kiểu
Thuộc tính type sẽ trả về văn bản cho loại tệp hoặc thư mục.
12345 | Sub FType ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt f = MyFSO.GetFolder ("C: \ temp \")MsgBox f.TypeKết thúc Sub |
Đoạn mã trên sẽ trả về văn bản ‘Thư mục tệp’.
12345 | Sub FType ()Làm mờ MyFSO dưới dạng FileSystemObject mớiĐặt f = MyFSO.GetFile ("C: \ temp \ myfile.txt")MsgBox f.TypeKết thúc Sub |
Đoạn mã trên sẽ trả về văn bản ‘Tài liệu văn bản’.
Lưu ý việc sử dụng ‘GetFolder’ và ‘GetFile’ trong mỗi ví dụ.