You are on page 1of 4

Microsoft Scripting Runtime

Kể từ phiên bản Vb6, MS cung cấp cho ta một phương tiện hữu dụng để lập trình với
các đối tượng hệ thống tâp tin. Đó là thư viện scrrun.dll (Microsoft Scripting Runtime) ,
một thư viện đã được biên dịch với nhiều tính chất dược thiết lập sẵn (trong đó một số là
đối tượng), và nhiều phương thức liên quan (Methode)

Ý tưởng cơ bản để làm việc với thư viện này là :

- Đầu tiên bạn cần tạo một đối tượng FileSystemObject mới.

- Khi đã có FileSystemObject mới, bạn sẽ nhận được một Collection


“Drivers” báo cho bạn về các ổ đĩa trên máy của người dùng.

- Collection “Drives” có thể cung cấp collection “Folders” báo cho bạn về
các hồ sơ trên ổ đĩa.

- Collection “Folders” có thể có collection “folders” khác bên trong cho các
hồ sơ con và collection “Files” cho các tập tin trong hồ sơ đó.
Để đơn giản hoá điều này, chúng ta phân tích đoạn code sau :

Dim MyFilesSystem As NEW FileSystemObject


Dim Adrive As Drive
For Each Adrive In MyFilesSystem.Drives
Me.Show
Print "Drive : " & Adrive.Path
Next

Ta tạo ra một đối tượng hệ thống tập tin ở dòng thứ nhất với từ khoá NEW,
kế tiếp là biến đối tượng kiểu Drive. Từ chổ này biến Adrive chỉ quy chiếu đến các đối
tượng là các Drive. Tí nh chất Drives của đối tượng
MyFilesSystem cung cấp cho ta một tập hợp gồm các ổ đĩa trên máy tính của người dùng.
Vòng For Each cho phép chúng ta lần lượt duyệt qua các phần tử là các ổ đĩa riêng rẻ
trong Collection Drives đó.

Khi chúng ta đã có đối tượng Drive riêng rẻ rồi, ta sẽ sử dụng những Methode của
đối tượng Drive để nhận được những thông tin ta cần, như các bạn có thể hình dung.

Các tính chất chính và thông dụng khi làm việc với đối tượng là Drive:

.AvaibleSpace

.DriveLetter
.DriveType
.FileSystem
.FreeSpace
.IsReady
.Path
.RootFolder
.SerialNumber

.ShareName
.TotalSize
.VolumName

Và sau đây là một số phương pháp quan trọng nhất của FileSystemObject

CopyFile Source, destination


[,overwrite]
CopyFolder source, destination
[overwrite]
CreateFolder (foldername)
DeleteFile filespec [, force]
DeleteFolder folderspec [,force]
DriveExist (drivesspec)
FilesExits (filespec)
GetAbsolutePathName (pathspec)
GetBaseName (path)
GetDrive (drivespec)
GetDriveName (path)
GetExtensionName (path)
GetFile (filespec)
GetFolder (folderspec)
GetParentFolderName (folderspec)
GetSpecialFolder (folderspec)
GetTempName
MoveFile source, destination
MoveFolder source, destination

Khi sử dụng cho nhu cầu thao tac với file, folder, drive thì thoải mái và lại it Bug. Đoạn
code sau đây cho phép bạn đi qua một Folder cho trước và tất cả những subFolder trong
nó.

Code
Dim MyFileSystem As new FileSystemOject
Dim MoreFolders As Folders
Dim tmpFolder As Folder

Private Sub MoveVeToSub (AFolder As Folder)


Set MoreFolders = AFolder.SubFolders
On Error Resume Next
For Each tmpFolder In MoreFolders
"muốn làm gì thì ở đây"
MoveToSub tmpFolder
Next
End Sub

Vì thủ tục MoveToSub nhận tham số là một biến đối tượng nên bạn truyền như sau
Code:
MoveToSub MyFileSystem.GetFolder (" ")

MoveToSub tmpFolder trong vòng For Each goi lại thường trình MoveTosub.
Chính câu này cho phép ta đi qua hết tất cả thư mục con trong Folder. Người ta gọi là sự
đệ quy. Câu On Error Resume Next dùng khi có những Folder không được phép mở như
là Volume System Information. Khi đó nó sẽ báo là Access Deny.

Rate