objFSO是个啥?FileSystemObject 详解

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中操作文件和文件夹的工具对象,它提供了丰富的方法来管理文件系统,是我们实现文件夹扫描功能的核心组件。

标签: excel

移动端可扫我直达哦~

推荐阅读

thumbnail 2025-03-13

Excel自动生成含超链接目录的方法

工作久了,积累了很多的碎片资料,为了方便查找,就将他们塞进了一个excel文件分表保存。然而追求方便快捷之路哪有什么尽头,于是又想要一份可以跳转并返回的目录,自动将其他表格的表格名称汇总到目录表,并在分表添加返回目录的按钮。这几天尝试...

工作相关 excel

thumbnail 2025-01-11

在EXCEL中根据出生年龄计算延迟退休的尝试

之前尝试用EXCEL拉了一张延迟退休表生成了文字版本而非图片版本的延迟退休表格。但也遗留了一个问题,就是如果根据单个表格内的出生日期,来计算延迟退休的日期。其实当时也做过类似的尝试了,这里尝试补完一下。日期函数在EXCEL中,类似20...

工作相关 excel

thumbnail 2024-12-30

在excel中自动计算法定退休年龄

在制作“法定退休年龄对照表”的时候遇到了一个小问题,月份是可以自动填充的,每4个月自动增加1个月的逻辑也可以被自动填充。但“改革后法定退休年龄”这一栏的逻辑就稍微复杂了一点,依赖自动填充就不可取了。改革后法定退休年龄“改革后法定退休年...

工作相关 excel

thumbnail 2024-09-09

如何利用VBA移除EXCEL文件的密码保护

收到了客户两张电子表格,需要修改几项数据,其中一张表格是直接可以修改的,但同一压缩包里的另一个文件则显示受保护,读取没问题,修改就不行了,询问客户密码也是一问三不知。无奈在51CTO找了这么一个暴力测试的方案,程序会在成功后弹窗提示该...

工作相关 excel

thumbnail 2024-01-09

EXCEL如何跳过空白单元格粘贴内容

除了函数与功能太多,随用随忘之外,个人觉得excel堪称完美,即便随用随忘,那始终还是博主自身存储空间和存储质量的原因。就好像类似下面的需求,把一段包含空格的内容隔行穿插到左边的单元格内。明明是曾经操作过的,但如何解决的却一下又想不起...

工作相关 excel

thumbnail 2023-09-14

Excel仅复制已筛选出来的单元格

利用Excel可以很方便的对数据进行筛选,但是如果框选筛选完成的数据,然后直接复制粘贴的话,我们会得到一个完整的包含所有数据的表格。快捷键筛选其实只是把不符合条件的单元格暂时的隐藏了起来,如果仔细观察一下屏幕左侧的行号,可以发现此时行...

工作相关 excel

thumbnail 2023-05-10

利用excel实现函数数据的保存与删除

刚工作的时候,因为经常要把订单整理出具体要求,然后下发到车间,所以diy了一个订单系统,利用了一些excel自动生成数据的函数。比如用“today()”来实现下单的日期,用“sum()”来统计总体的数量。这个简陋的管理系统用于打印是没...

工作相关 excel

thumbnail 2023-05-10

Excel快递单根据地区填写预计签收日期

excel中有很多关于日期的函数,博主比较常用的是“today()”,因为工作中经常需要印发订单到车间,订单上的下发日期上写上一个这个函数,因为该函数会随日期自动变化,所以就一劳永逸了。偶尔也碰到过客户单项的数量与合计数量不符的情况,...

工作相关 excel

thumbnail 2023-01-10

excel求和过程中如何忽略错误的值

设计逻辑不够严谨的表格中,往往会遇到“被零除”错误,表格中会显示“#DIV/0!”字样,如果对包含该错误的单元格进行求和操作,在求和格子中,用户往往也会收到一个相同的错误。修改表格逻辑当然是治标又治本的方法,但是当我们急于想知道其他非...

工作相关 excel

thumbnail 2022-10-14

用excel根据列表自动填写快递面单

整理网盘的时候翻到一个很久以前做的表格,根据表格地址自动定位数据打印快递面单。涉及到了工作薄内不同表格间的数据调用,以及vba弹出窗口的返回信息,贴在博客上以便将来有需要的时候查找。表格的vba代码Sub test() Dim...

工作相关 excel

thumbnail 2022-10-13

excel文件内工作表太多如何快速定位

excel一个文件可以视为一个工作薄,一个工作薄可以包含多张表格,将多张表格统一放在一个文件中,可以方便的进行数据的分析与交换,也更易于管理。但当表格数目较多时,仅依靠左下角的前进与后退按钮感觉是有点不够用的,这里介绍两种快速切换工作...

工作相关 excel