befaint
|||||||||||||
- Tham gia
- 6/1/11
- Bài viết
- 14,515
- Được thích
- 19,699
Bài 12. FileSystemObject
(Danh sách các bài viết về VBA xem ở đây Index - Các bài viết về VBA)
FileSystemObject (FSo) là một phần trong thư viện Microsoft Scripting Runtime (scrrun.dll), là công cụ xử lý về Drive, Folder, File. Nội dung chính gồm:
#1
1. Khai báo
2. Các phương thức
2.1. BuildPath
2.2. CopyFile
2.3. CopyFolder
2.4. CreateFolder
2.5. CreateTextFile
2.6. DeleteFile
2.7. DeleteFolder
2.8. DriveExists
2.9. FileExists
2.10. FolderExists
#2
2.11. GetAbsolutePathName
2.12. GetBaseName
2.13. GetDrive
2.14. GetDriveName
2.15. GetExtensionName
2.16. GetFile
2.17. GetFileName
2.18. GetFolder
2.19. GetParentFolderName
2.20. GetSpecialFolder
2.21. GetTempName
2.22. MoveFile
2.23. MoveFolder
2.24. OpenTextFile
3. Thuộc tính
3.1. Thuộc tính Drives của FSo
3.2. Thuộc tính Files và SubFolders của Folder
#3
4. Một số Sub/ Function
-------------------------------
1. Khai báo
1.1. Kiểu khai báo sớm
(Có Tooltip khi gọi FSo, phải thiết lập trong Tools/References)
- Trong cửa sổ VBA, Tools menu, References.
- Tìm và check vào mục “Microsoft Scripting Runtime” trong cửa sổ References – VBAProject.
Khai báo trong code:
1.2. Kiểu khai báo muộn
(Không có Tooltip khi gọi FSo, không cần thiết lập trong Tools/References).
Khai báo trong code:
2. Các phương thức
2.1. BuildPath
Phương thức BuildPath gán một tên vào một đường dẫn (trả về một chuỗi là đường dẫn).
Path: Bắt buộc. Đường dẫn để nối tên vào.
Name: Bắt buộc. Tên cần nối vào đường dẫn chỉ định.
Ví dụ:
2.2. CopyFile
Source: Bắt buộc. Đường dẫn của một hoặc nhiều tập tin cần sao chép (có thể sử dụng ký tự đại diện “*?").
Destination: Bắt buộc. Nơi để dán tập tin đã sao chép (ký tự đại diện không thể được sử dụng).
OverWrite: Không bắt buộc. Một giá trị Boolean xác định một tập tin đã tồn tại có thể bị ghi đè hay không. True cho phép các tập tin đã có được ghi đè lên và False ngăn ngừa các tập tin đã có bị ghi đè lên. Mặc định là True.
Ví dụ:
2.3. CopyFolder
Source: Bắt buộc. Đường dẫn của một hoặc nhiều thư mục cần sao chép (Có thể sử dụng ký tự đại diện "*?")
Destination: Bắt buộc. Nơi để dán thư mục đã sao chép (ký tự đại diện không thể được sử dụng).
OverWriteFiles: Không bắt buộc. Một giá trị Boolean xác định một thư mục đã tồn tại có thể bị ghi đè hay không. True cho phép các thư mục đã có được ghi đè lên và False ngăn ngừa các thư mục đã có bị ghi đè lên. Mặc định là True.
Ví dụ:
2.4. CreateFolder
Path: Bắt buộc. Là đường dẫn của thư mục cần tạo.
Nếu thư mục cần tạo đã tồn tại thì sẽ gặp lỗi, cần kiểm tra sự tồn tại trước khi tạo mới.
Ví dụ:
2.5. CreateTextFile
Tạo một tập tin văn bản dạng TextStream trong một thư mục chỉ định, có thể đọc và viết vào tập tin đó.
FileName: Bắt buộc. Là đường dẫn đầy đủ của tập tin cần tạo.
OverWrite. Không bắt buộc. Thiết lập cho phép có ghi đè tập tin đã tồn tại hay không. Mặc định là True, tức là cho phép ghi đè tập tin đã tồn tại. Ngược lại, False tức là không cho phép ghi đè.
Unicode: Không bắt buộc. Thiết lập tập tin văn bản được tạo dưới định dạng Unicode (ứng với True) hay ASCII (ứng với False). Mặc định là False.
Ví dụ:
2.6. DeleteFile
FileSpec: Bắt buộc. Đường dẫn của một hoặc nhiều tập tin cần xóa, cho phép dùng ký tự đại diện (*?).
Force: Không bắt buộc. Thiết lập cho phép tập tin có thuộc tính Read-Only có bị xóa hay không. True cho phép tập tin Read-Only bị xóa, False thì chúng không bị xóa. Mặc định là False.
Lưu ý: Gặp lỗi nếu tập tin không tồn tại.
Ví dụ:
2.7. DeleteFolder
FolderSpec: Bắt buộc. Là đường dẫn của một hoặc nhiều thư mục cần xóa, cho phép dùng ký tự đại diện.
Force: Không bắt buộc. Thiết lập cho phép thư mục có thuộc tính Read-Only có bị xóa hay không. True cho phép thư mục Read-Only bị xóa, False thì chúng không bị xóa. Mặc định là False.
Lưu ý: Gặp lỗi nếu thư mục không tồn tại.
Ví dụ:
2.8. DriveExists
Kiểm tra sự tồn tại của một ổ đĩa. Trả về True nếu nó tồn tại, ngược lại trả về False.
DriveSpec: Bắt buộc. Tên ổ đĩa cần kiểm tra.
Ví dụ:
2.9. FileExists
Kiểm tra sự tồn tại của một tập tin. Trả về True nếu nó tồn tại, ngược lại trả về False.
FileSpec: Bắt buộc. Đường dẫn đầy đủ của tập tin cần kiểm tra.
Ví dụ:
2.10. FolderExists
Kiểm tra sự tồn tại của một thư mục. Trả về True nếu nó tồn tại, ngược lại trả về False.
FolderSpec: Bắt buộc. Đường dẫn đầy đủ của thư mục cần kiểm tra.
Ví dụ:
------------
{còn tiếp}
(Danh sách các bài viết về VBA xem ở đây Index - Các bài viết về VBA)
FileSystemObject (FSo) là một phần trong thư viện Microsoft Scripting Runtime (scrrun.dll), là công cụ xử lý về Drive, Folder, File. Nội dung chính gồm:
#1
1. Khai báo
2. Các phương thức
2.1. BuildPath
2.2. CopyFile
2.3. CopyFolder
2.4. CreateFolder
2.5. CreateTextFile
2.6. DeleteFile
2.7. DeleteFolder
2.8. DriveExists
2.9. FileExists
2.10. FolderExists
#2
2.11. GetAbsolutePathName
2.12. GetBaseName
2.13. GetDrive
2.14. GetDriveName
2.15. GetExtensionName
2.16. GetFile
2.17. GetFileName
2.18. GetFolder
2.19. GetParentFolderName
2.20. GetSpecialFolder
2.21. GetTempName
2.22. MoveFile
2.23. MoveFolder
2.24. OpenTextFile
3. Thuộc tính
3.1. Thuộc tính Drives của FSo
3.2. Thuộc tính Files và SubFolders của Folder
#3
4. Một số Sub/ Function
-------------------------------
1. Khai báo
1.1. Kiểu khai báo sớm
(Có Tooltip khi gọi FSo, phải thiết lập trong Tools/References)
- Trong cửa sổ VBA, Tools menu, References.
- Tìm và check vào mục “Microsoft Scripting Runtime” trong cửa sổ References – VBAProject.
Khai báo trong code:
PHP:
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
(Không có Tooltip khi gọi FSo, không cần thiết lập trong Tools/References).
Khai báo trong code:
PHP:
Dim FSo As Object
Set FSo = CreateObject("Scripting.FileSystemObject")
2. Các phương thức
2.1. BuildPath
PHP:
FSo.BuildPath(Path As String, Name As String) As String
Path: Bắt buộc. Đường dẫn để nối tên vào.
Name: Bắt buộc. Tên cần nối vào đường dẫn chỉ định.
Ví dụ:
PHP:
Sub BuildPath()
' Dim Fso As Scripting.FileSystemObject'
' Set Fso = New Scripting.FileSystemObject'
Dim FSo As Object
Set FSo = CreateObject("Scripting.FileSystemObject")
Dim NewPath As String
NewPath = FSo.BuildPath(ThisWorkbook.Path, "NewFolder")
MsgBox NewPath
End Sub
2.2. CopyFile
PHP:
FSo.CopyFile(Source As String, Destination As String, [OverWriteFiles As Boolean = True])
Destination: Bắt buộc. Nơi để dán tập tin đã sao chép (ký tự đại diện không thể được sử dụng).
OverWrite: Không bắt buộc. Một giá trị Boolean xác định một tập tin đã tồn tại có thể bị ghi đè hay không. True cho phép các tập tin đã có được ghi đè lên và False ngăn ngừa các tập tin đã có bị ghi đè lên. Mặc định là True.
Ví dụ:
PHP:
Sub CopyFile()
' Dim Fso As Scripting.FileSystemObject'
' Set Fso = New Scripting.FileSystemObject'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
Dim sPath As String, dPath As String
sPath = ThisWorkbook.Path & "\*.xlsx"
dPath = "D:\Vidu"
FSo.CopyFile sPath, dPath, True
End Sub
2.3. CopyFolder
PHP:
FSo.CopyFolder(Source As String, Destination As String, [OverWriteFiles As Boolean = True])
Destination: Bắt buộc. Nơi để dán thư mục đã sao chép (ký tự đại diện không thể được sử dụng).
OverWriteFiles: Không bắt buộc. Một giá trị Boolean xác định một thư mục đã tồn tại có thể bị ghi đè hay không. True cho phép các thư mục đã có được ghi đè lên và False ngăn ngừa các thư mục đã có bị ghi đè lên. Mặc định là True.
Ví dụ:
PHP:
Sub CopyFolders()
'Copy all the folders in "D:\Example"'
'to the folder "D:\Vidu"'
' Dim Fso As Scripting.FileSystemObject'
' Set Fso = New Scripting.FileSystemObject'
Dim FSo As Object
Set FSo = CreateObject("Scripting.FileSystemObject")
Dim sPath As String, dPath As String
sPath = "D:\Example\*"
dPath = "D:\Vidu"
FSo.CopyFolder sPath, dPath, True
End Sub
'-----------------'
Sub CopyFolder()
'Copy only the folder "OldFolder" in "D:\Example"'
'to the folder "D:\Vidu"'
' Dim Fso As Scripting.FileSystemObject'
' Set Fso = New Scripting.FileSystemObject'
Dim FSo As Object
Set FSo = CreateObject("Scripting.FileSystemObject")
Dim sPath As String, dPath As String
sPath = "D:\Example\OldFolder"
dPath = "D:\Vidu"
FSo.CopyFolder sPath, dPath, True
End Sub
2.4. CreateFolder
PHP:
FSo.CreateFolder(Path As String) As Folder
Nếu thư mục cần tạo đã tồn tại thì sẽ gặp lỗi, cần kiểm tra sự tồn tại trước khi tạo mới.
Ví dụ:
PHP:
Sub CreateFolder()
'FSo.CreateFolder(Path As String) As Folder'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
FSo.CreateFolder (ThisWorkbook.Path & "\NewFolder")
'Gap loi neu thu muc da ton tai, can kiem tra su ton tai cua thu muc do truoc khi dung .CreateFolder'
End Sub
2.5. CreateTextFile
PHP:
FSo.CreateTextFile(FileName As String, [OverWrite As Boolean = True], [Unicode As Boolean = False]) As TextStream
FileName: Bắt buộc. Là đường dẫn đầy đủ của tập tin cần tạo.
OverWrite. Không bắt buộc. Thiết lập cho phép có ghi đè tập tin đã tồn tại hay không. Mặc định là True, tức là cho phép ghi đè tập tin đã tồn tại. Ngược lại, False tức là không cho phép ghi đè.
Unicode: Không bắt buộc. Thiết lập tập tin văn bản được tạo dưới định dạng Unicode (ứng với True) hay ASCII (ứng với False). Mặc định là False.
Ví dụ:
PHP:
Sub CreateTextFile()
'FSo.CreateTextFile(FileName As String, [OverWrite As Boolean = True], [Unicode As Boolean = False]) As TextStream'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
Dim nameText As String, TxtFile As TextStream
nameText = ThisWorkbook.Path & "\NewText.txt"
Set TxtFile = FSo.CreateTextFile(nameText, True, True)
TxtFile.WriteLine ("Hello World!")
TxtFile.WriteLine ("This is a example!")
TxtFile.Close
End Sub
2.6. DeleteFile
PHP:
FSo.DeleteFile(FileSpec As String, [Force As Boolean = False])
Force: Không bắt buộc. Thiết lập cho phép tập tin có thuộc tính Read-Only có bị xóa hay không. True cho phép tập tin Read-Only bị xóa, False thì chúng không bị xóa. Mặc định là False.
Lưu ý: Gặp lỗi nếu tập tin không tồn tại.
Ví dụ:
PHP:
Sub DeleteFile()
'FSo.DeleteFile(FileSpec As String, [Force As Boolean = False])'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
Dim nameText As String
nameText = ThisWorkbook.Path & "\NewText.txt"
FSo.CreateTextFile nameText, True, False
'nameText = ThisWorkbook.Path & "\*.txt"'
FSo.DeleteFile nameText, True
'Gap loi neu tap tin can xoa khong ton tai'
End Sub
2.7. DeleteFolder
PHP:
FSo.DeleteFolder(FolderSpec As String, [Force As Boolean = False])
Force: Không bắt buộc. Thiết lập cho phép thư mục có thuộc tính Read-Only có bị xóa hay không. True cho phép thư mục Read-Only bị xóa, False thì chúng không bị xóa. Mặc định là False.
Lưu ý: Gặp lỗi nếu thư mục không tồn tại.
Ví dụ:
PHP:
Sub DeleteFolder()
'FSo.DeleteFolder(FolderSpec As String, [Force As Boolean = False])'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
FSo.DeleteFolder (ThisWorkbook.Path & "\NewFolder")
'FSo.DeleteFolder (ThisWorkbook.Path & "\?")'
End Sub
2.8. DriveExists
PHP:
FSo.DriveExists(DriveSpec As String) As Boolean
DriveSpec: Bắt buộc. Tên ổ đĩa cần kiểm tra.
Ví dụ:
PHP:
Sub DriveExists()
'FSo.DriveExists(DriveSpec As String) As Boolean'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
MsgBox FSo.DriveExists("C:\")
End Sub
2.9. FileExists
PHP:
FSo.FileExists(FileSpec As String) As Boolean
FileSpec: Bắt buộc. Đường dẫn đầy đủ của tập tin cần kiểm tra.
Ví dụ:
PHP:
Sub FileExists()
'FSo.FileExists(FileSpec As String) As Boolean'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
MsgBox FSo.FileExists(ThisWorkbook.FullName)
End Sub
2.10. FolderExists
PHP:
FSo.FolderExists(FolderSpec As String) As Boolean
FolderSpec: Bắt buộc. Đường dẫn đầy đủ của thư mục cần kiểm tra.
Ví dụ:
PHP:
Sub FolderExists()
'FSo.FolderExists(FolderSpec As String) As Boolean'
Dim FSo As Scripting.FileSystemObject
Set FSo = New Scripting.FileSystemObject
MsgBox FSo.FolderExists(ThisWorkbook.Path)
End Sub
------------
{còn tiếp}
File đính kèm
Lần chỉnh sửa cuối: