如何在vba中使用FileSystemObject对象操作文件和文件夹?

在编写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

 

       

发表评论