VBA进阶 | 文件操作15:FileSystemObject对象及其方法和属性(7)

更新日期:2019-04-14
完美Excel

学习Excel技术,关注微信公众号:

excelperfect

 

本文重点讲解FileSystemObject对象的GetFolder方法GetParentFolderName方法GetSpecialFolder方法GetTempName方法

 

GetFolder方法

 

GetFolder方法返回Folder对象。其语法为:

oFileSysObj.GetFolder (FolderPath)

其中:

1.oFileSysObj代表任何能返回FileSystemObject对象的对象变量。

2.参数FolderPath必需,指定所需文件夹的路径,String类型,可以为相对路径或路径。如果FolderPath是共享名或网络路径,GetFolder确认该驱动器或共享是File对象创建进程的一部分。如果FolderPath的任何部分不能连接或不存在,就会产生一个错误。

 

说明:

1.要获得所需的Path字符串,首先应该使用GetAbsolutePathName方法。如果FolderPath包含一个网络驱动器或共享,可以在调用GetFolder方法之前使用DriveExists方法确认指定的驱动器是否可用。由于GetFolder方法要求FolderPath是一个有效文件夹的路径,所以应调用FolderExists方法来检验FolderPath是否存在。

2.必须使用Set语句将Folder对象赋给一个局部对象变量。

 

示例

下面的程序列出C盘中的所有文件:

Sub FilesInFolder()

    Dim fs As Object

    Dim objFolder As Object

    Dim objFile As Object

    Set fs =CreateObject("Scripting.FileSystemObject")

    Set objFolder =fs.GetFolder("C:\")

    Workbooks.Add

    For Each objFile InobjFolder.Files

        ActiveCell.Select

        Selection.Formula =objFile.Name

        ActiveCell.Offset(0,1).Range("A1").Select

        Selection.Formula =objFile.Type

        ActiveCell.Offset(1,-1).Range("A1").Select

    Next

   Columns("A:B").Select

    Selection.Columns.AutoFit

End Sub

 

在我的电脑上运行上述代码后的结果如下图1所示。

1

 

GetParentFolderName方法

 

返回给定路径中最后部分前的文件夹名,其语法为:

oFileSysObj.GetParentFolderName (Path)

其中:

1.oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。

2.参数Path必需,指定路径说明,String类型。

 

说明:

1.如果从Path中不能确定父文件夹名,就返回一个零长字符串(””)。Path可以为相对路径或路径。可以是网络驱动器或共享。

2.GetParentFolderName方法不能检验Path的某个部分是否存在。

3.GetParentFolderName方法认为Path中不属于驱动器说明的那部分字符串除了最后一部分外余下的字符串就是父文件夹。除此之外它不做任何其他检测,更像是一个字符串解析和处理例程而不是与对象处理有关的例程。

 

GetSpecialFolder方法

 

GetSpecialFolder方法返回操作系统文件夹路径,其中0代表Windows文件夹,1代表System(系统)文件夹,2代表Temp(临时)文件夹。其语法为:

oFileSysObj.GetSpecialFolder (SpecialFolder)

其中:

1.oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。

2.参数SpecialFolder必需,为特殊的文件夹常数,表示三种特殊系统文件夹中其中一个的值。

 

说明:

1.可以使用Set语句将Folder对象赋给一个局部对象变量,但是如果只对检索特殊的文件夹感兴趣,就可以使用下列语句来实现:

sPath=oFileSys.GetSpecialFolder (iFolderConst)

或者:

sPath=oFileSys.GetSpecialFolder (iFolderConst).Path

2.由于Path属性是Folder对象的缺省属性,所以个语句有效。因为不是给一个对象变量赋值,所以赋给sPath的值是缺省的Path属性值,而不是对象引用。

 

示例

获取并显示特定文件夹路径:

Sub SpecialFolders()

    Dim fs As Object

    Dim strWindowsFolder AsString

    Dim strSystemFolder AsString

    Dim strTempFolder AsString

    Set fs =CreateObject("Scripting.FileSystemObject")

    strWindowsFolder =fs.GetSpecialFolder(0)

    strSystemFolder =fs.GetSpecialFolder(1)

    strTempFolder = fs.GetSpecialFolder(2)

    MsgBox strWindowsFolder& vbCrLf & strSystemFolder & vbCrLf _

        & strTempFolder,vbInformation + vbOKOnly, "特定文件夹"

End Sub

 

在我的电脑上运行上述代码后的结果如下图2所示。

2

 

GetTempName方法

返回系统创建的一个临时文件或文件夹名。其语法为:

oFileSysObj.GetTempName

其中:

oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。

 

说明:

1.GetTempName方法不能创建临时文件或文件夹,它仅仅提供一个可用于CreateTextFile方法的文件或文件夹名。

2.一般来说,不必创建自已的临时文件名。WindowsWindows API中提供了一种算法来创建特殊的临时文件或文件夹名,这样Windows才能识别它们。GetTempName很好地包装了GetTempFilename API函数。