objFSO 是 FileSystemObject 对象的变量名,它是Windows脚本环境中用于操作文件系统的核心对象。
什么是 FileSystemObject?
全称: File System Object
作用: 提供对计算机文件系统的访问能力
来源: 是 Microsoft Scripting Runtime 库的一部分
功能: 可以创建、删除、移动文件和文件夹,以及读取文件属性等
如何创建 FileSystemObject?
' 标准创建方式
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 或者使用早期绑定(需要引用库)
Dim objFSO As Scripting.FileSystemObject
Set objFSO = New Scripting.FileSystemObject
FileSystemObject 的常用方法和属性
文件夹操作:
' 获取文件夹对象
Dim folder As Object
Set folder = objFSO.GetFolder("C:\MyFolder")
' 创建文件夹
objFSO.CreateFolder("C:\NewFolder")
' 删除文件夹
objFSO.DeleteFolder("C:\OldFolder")
' 检查文件夹是否存在
If objFSO.FolderExists("C:\SomeFolder") Then
' 文件夹存在
End If
文件操作:
' 检查文件是否存在
If objFSO.FileExists("C:\file.txt") Then
' 文件存在
End If
' 复制文件
objFSO.CopyFile "source.txt", "destination.txt"
' 删除文件
objFSO.DeleteFile "file.txt"
在我们的代码中的具体应用
' 创建 FileSystemObject 实例
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 获取当前工作簿所在文件夹
Set objFolder = objFSO.GetFolder(ThisWorkbook.Path)
' 遍历子文件夹
For Each objSubFolder In objFolder.SubFolders
' 访问文件夹属性
Debug.Print "文件夹名: " & objSubFolder.Name
Debug.Print "完整路径: " & objSubFolder.Path
Debug.Print "大小: " & objSubFolder.Size
Debug.Print "创建时间: " & objSubFolder.DateCreated
Next
FileSystemObject 的主要属性
通过文件夹对象可以访问的属性:
.Name - 文件夹名称
.Path - 完整路径
.Size - 文件夹总大小(包含所有文件)
.DateCreated - 创建日期
.DateLastModified - 最后修改日期
.DateLastAccessed - 最后访问日期
.Attributes - 文件夹属性(隐藏、只读等)
为什么使用 FileSystemObject?
方法 | 优点 | 缺点 |
---|---|---|
FileSystemObject | 功能强大,支持递归操作 | 需要创建对象实例 |
Dir() 函数 | 简单,内置于VBA | 功能有限,不支持递归 |
Shell 命令 | 可以执行复杂操作 | 不稳定,依赖系统 |
完整示例:显示文件夹信息
Sub ShowFolderInfo()
Dim objFSO As Object
Dim objFolder As Object
' 创建 FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 获取文件夹
Set objFolder = objFSO.GetFolder("C:\Test")
' 显示文件夹信息
MsgBox "文件夹信息:" & vbCrLf & _
"名称: " & objFolder.Name & vbCrLf & _
"路径: " & objFolder.Path & vbCrLf & _
"大小: " & FormatNumber(objFolder.Size / 1024 / 1024, 2) & " MB" & vbCrLf & _
"创建时间: " & objFolder.DateCreated
' 清理对象
Set objFSO = Nothing
Set objFolder = Nothing
End Sub
使用前的注意事项
' 错误处理很重要
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO Is Nothing Then
MsgBox "无法创建文件系统对象!"
Exit Sub
End If
On Error GoTo 0
objFSO 就是一个让我们能够在VBA中操作文件和文件夹的工具对象,它提供了丰富的方法来管理文件系统,是我们实现文件夹扫描功能的核心组件。