在编写vba代码的解决方案时,经常会碰到需要对文件或者文件夹进行相关操作。虽然vba内部已经预先定义好了一系列操作文件或者文件夹的函数或者语句,但是使用起来相对零散。而FileSystemObject对象(简称FSO对象)则涵盖了几乎所有的文件或者文件夹的相关操作,包括添加、移动、修改、创建或者删除文件或文件夹,同时还可以获取文件或者文件夹的名称、创建时间、最后一次修改时间等属性,以及对文本文件进行相关的操作,是一个综合、方便的文件操作对象。
由于FileSystemObject对象存在于脚本类型库【Scripting type library (Scrrun.dll)】中 ,在vba中不能直接使用它,需要先用CreateObject(“Scripting.FileSystemObject”)创建该对象。由于它的属性和方法众多,详情可以直接浏览它的官方帮助文档FileSystemObject帮助文档。
以下是一段遍历当前目录下所有文件名到一列单元格的代码:
Sub QQ1722187970()
Dim i
Dim sPath
sPath = Excel.Application.ThisWorkbook.Path
Dim oWK As Worksheet
Set oWK = ActiveSheet
'定义一个FileSystemObject对象
Dim oFso As Object
Set oFso = CreateObject("Scripting.FileSystemObject")
'定义一个文件夹对象
Dim oFolder As Object
Set oFolder = oFso.GetFolder(sPath)
'定义文件对象
Dim oFile As Object
'如果指定的文件夹含有文件
If oFolder.Files.Count Then
For Each oFile In oFolder.Files
'将所有的文件名罗列在活动单元格的第一列
With oWK
.Cells(1 + i, 1) = oFile.Name
End With
i = i + 1
Next
End If
End Sub


发表评论