5.4.1-fso¶
fso在上一章节也介绍过,介绍获取某个文件的文件名。fso 为FileSystemObject的缩写,是Excel-VBA提供的一个工具包,方便我们对文件或者文件夹进行操作。其实在现在很多高级语言中,提供了大量的这种工具包,可以称为轮子,这样用户无需重复制作各种自己的小工具,大大提升个人的开发效率。
本小节汇总介绍一下fso对文件夹和文件的通用功能,不包含对文本文件读写,这个后续会介绍
1)文件夹操作
1.1)文件夹存在与否判断
1.2)文件夹的新建
1.3)文件夹复制
1.4)文件夹的删除
1.5)遍历文件夹内部文件夹
1.6)遍历文件夹内部文件
代码示例:
Sub main()
' 文件夹操作
Set fso = CreateObject("Scripting.FileSystemObject")
currentAddress = ThisWorkbook.Path
folderAddress = currentAddress & "\" & "文件夹1"
folderAddress2 = currentAddress & "\" & "文件夹2"
folderAddress3 = currentAddress & "\" & "文件夹-遍历"
' 判断文件夹是否已经存在
If fso.FolderExists(folderAddress) Then
Debug.Print ("文件夹已存在")
Else
' 若不存在,则新建文件夹
Set objFolder = fso.Createfolder(folderAddress)
End If
If fso.FolderExists(folderAddress) Then
' 复制文件夹
fso.CopyFolder folderAddress, folderAddress2
fso.DeleteFolder (folderAddress)
Debug.Print ("文件夹已删除")
End If
' 遍历文件夹
Debug.Print ("遍历文件夹,输出子文件夹名")
For Each Wenjianjia In fso.GetFolder(folderAddress3).SubFolders
WenjianjiaName = Wenjianjia.Name
Debug.Print (WenjianjiaName)
Next
Debug.Print ("遍历文件夹,输出子文件名")
For Each Wenjian In fso.GetFolder(folderAddress3).Files
WenjianName = Wenjian.Name
Debug.Print (WenjianName)
Next
End Sub
2)文件操作
2.1)文件是否存在
2.2)文件的复制
2.3)文件的重命名
2.4)文件的删除
Sub test()
' 文件操作
Set fso = CreateObject("Scripting.FileSystemObject")
currentAddress = ThisWorkbook.Path
fileAddress = currentAddress & "\" & "文件1.txt"
fileAddress2 = currentAddress & "\" & "文件2.txt"
If fso.FileExists(fileAddress) Then
Debug.Print ("文件已存在")
fso.CopyFile fileAddress, fileAddress2
' 修改文件名
Set objFile = fso.GetFile(fileAddress)
objFile.Name = "文件1-1.txt"
' 删除文件
fso.DeleteFile (fileAddress2)
Debug.Print ("删除文件:" & fileAddress2)
Else
Debug.Print ("文件不存在")
End If
End Sub
仔细去观察以上代码,可以发现明显的规律,很多功能对于文件夹和文件操作的代码的区别就是:Folder和File,当然有些功能区别会更多一点,汇总如下:
类型 |
是否存在 |
复制 |
删除 |
获取对象 |
创建 |
|---|---|---|---|---|---|
文件夹 |
fso.FolderExists |
fso.CopyFolder |
fso.DeleteFolder |
fso.GetFolder |
fso.Createfolder |
文件 |
fso.FileExists |
fso.CopyFile |
fso.DeleteFile |
fso.GetFile |
fso.CreateTextFile |