视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
excel VBA - FileSystemObject 对象
2025-10-03 15:06:55 责编:小OO
文档
FileSystemObject 对象  属性 方法

描述

提供对计算机文件系统的访问。

语法

Scripting.FileSystemObject 

说明

下面的代码举例说明了如何使用 FileSystemObject 返回一个 TextStream 对象,该对象是可读并可写的:

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\estfile.txt", True)

a.WriteLine("This is a test.")

a.Close

在上面列出的代码中,CreateObject 函数返回 FileSystemObject (fs)。CreateTextFile 方法接着创建文件作为一个 TextStream 对象(a),而 WriteLine 方法则向创建的文本文件中写入一行文本。Close 方法刷新缓冲区并关闭文件。

属性 顶部 方法

属性描述
Drives返回包含本地机器上所有可用 Drive 对象的 Drives 集合。

Drives 属性

描述

返回包含本地机器上所有可用 Drive 对象的 Drives 集合。

语法

object.Drives 

object 总是一个 FileSystemObject。

说明

对于可删除媒体驱动器来说,不需要插入媒体,就可使其出现在 Drives 集合中。

可以用 For Each...Next 结构遍及 Drives 集合中的成员,如下面的代码所示:

Sub ShowDriveList

    Dim fs, d, dc, s, n

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set dc = fs.Drives

    For Each d in dc

        s = s & d.DriveLetter & " - " 

        If d.DriveType = 3 Then

            n = d.ShareName

        Else

            n = d.VolumeName

        End If

        s = s & n & vbCrLf

    Next

    MsgBox s

End Sub

方法 顶部 属性

方法描述
BuildPath追加一个名字到一个已经存在的路径。
CopyFile把一个或多个文件从一个地方复制到另一个地方。
CopyFolder从一个地方递归地复制一个文件夹到另一个地方。
CreateFolder创建一个文件夹。
CreateTextFile创建一个指定的文件名并且返回一个用于该文件读写的 TextStream 对象。
DeleteFile删除一个指定的文件。
DeleteFolder删除一个指定的文件夹和它的内容。
DriveExists如果指定的驱动器存在,返回 True,如果不存在返回 False。
FileExists如果指定的文件存在,返回 True,若不存在,则返回 False。
FolderExists如果指定的文件夹存在返回 True,不存在返回 False。
GetAbsolutePathName从提供的路径说明中返回一个完整、明确的路径。
GetBaseName返回一个包含路径中最后部件的基本名字(去掉任何文件扩展名)的字符串。
GetDrive返回一个与指定路径中的驱动器相对应的 Drive 对象。
GetDriveName返回一个包含指定路径的驱动器名字的字符串。
GetExtensionName返回一个包含路径中最后部件扩展名的字符串。
GetFile返回一个和指定路径中文件相对应的 File 对象。
GetFileName返回指定路径中的最后部件,该路径不是驱动器说明的一部分。
GetFolder返回一个和指定路径中文件夹相对应的 Folder 对象。

GetParentFolderName返回一个包含指定路径最后部件父文件夹名字的字符串。
GetSpecialFol
der返回指定的特殊文件夹。
GetTempName返回一个随机产生的临时文件或文件夹的名字,该名字在执行需要临时文件或文件夹的操作时有用。
MoveFile将一个或多个文件从一个地方移动到另一个地方。
MoveFolder将一个或多个文件夹从一个地方移动到另一个地方。
OpenTextFile打开一个指定的文件并返回一个 TextStream 对象,该对象可用于对文件进行读操作或追加操作。

BuildPath 方法

描述

追加一个名字到一个已经存在的路径。

语法

object.BuildPath(path, name) 

BuildPath 方法语法有如下几部分:

部分描述
object必需的。始终是 FileSystemObject 的名字。

path必需的。要对其追加名字的已存在路径。路径可以是绝对的也可以是相对的,不必指定一个已存在的文件夹。
name必需的。要追加到已存在路径上的名字。
说明

只有在需要时,BuildPath 方法才在已存在路径和名字之间插入一个附加的路径分隔符。

CopyFile 方法

描述

把一个或多个文件从一个地方复制到另一个地方。

语法

object.CopyFile source, destination[, overwrite]

CopyFile 方法语法有如下几部分:

部分描述
object必需的。object始终是一个 FileSystemObject 的名字。

source必需的。指明一个或多个要被复制文件的字符串文件说明,它可以包括通配符。
destination必需的。指明 source 中的一个或多个文件要被复制到的接受端的字符串,不允许有通配符。

overwrite选项的。Boolean 值,它表示存在的文件是否被覆盖。如果是 True,文件将被覆盖;如果是 False,它们不被覆盖。缺省值是 True。注意如果 destination 具有只读属性设置,不论 overwrite 值如何,CopyFile 都将失败。

说明

通配符只能用在 source 参数的最后一个路径部件。例如,你可以在下面请况使用通配符:

FileSystemObject.CopyFile "c:\\mydocuments\\letters\\*.doc", "c:\empfolder\\"

但下面情况不能使用:

FileSystemObject.CopyFile "c:\\mydocuments\\*\\R197.xls", "c:\empfolder"

如果 source 包含通配符或 destination 以路径分隔符(\)为结尾,则认为 destination 是一个已存在文件夹,在其中复制相匹配的文件。否则认为 destination 是一个要创建文件的名字。不论是那种情况,当复制一个文件时,可能发生三种事件。 

∙如果 destination 不存在,source 得到复制。这是通常的情况。

∙如果 destination 是一个已存在的文件,则当 overwrite 值为 False 时发生一个错误,否则,source的复制文件将试图覆盖已存在文件。

∙如果 destination 是一个目录,发生一个错误。 

如果使用通配符的 source 不能和任何文件匹配,同样产生一个错误。CopyFile 方法停止在它遇到的第一个错误上。不要试图回卷或撤消错误发生前所做的任何改变。

CopyFolder 方法

描述

从一个地方递归地复制一个文件夹到另一个地方。

语法

object.CopyFolder source, destination[, overwrite]

CopyFolder 方法语法有如下几部分:

部分描述
Object必需的。始终为一个 FileSystemObject 的名字。

source必需的。指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。 
destination必需的。指明 source 中被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。

overwrite选项的。Boolean 值,它表示已存在的文件夹是否被覆盖。如果为 True,文件被覆盖。如果为 False,文件不被覆盖。缺省值为 True。

说明

通配符仅可用于 source 参数的最后一个路径部件。例如你可以在下面情况使用它:

FileSystemObject.CopyFolder "c:\\mydocuments\\letters\\*", "c:\empfolder\\"

但不能在下面情况使用它:

FileSystemObject.CopyFolder "c:\\mydocuments\\*\\*", "c:\empfolder\\"

如果 source 包含通配符或 destination 以路径分隔符(\\)为结尾,则认为 destination 是一个已存在的文件夹,在其中复制相匹配的文件夹和子文件夹。否则认为 destination 是一个要创建的文件夹的名字。不论何种情况,当复制一个文件夹时,可能发生四种事件。 

∙如果 destination 不存在,source 文件夹和它所有的内容得到复制。这是通常的情况。

∙如果 destination 是一个已存在的文件,则发生一个错误。

∙如果 destination 是一个目录,它将尝试复制文件夹和它所有的内容。如果一个包含在 source 的文件已在 destination 中存在,当 overwrite 为 False 时发生一个错误,否则它将尝试覆盖这个文件。

∙如果 destination 是一个只读目录,当尝试去复制一个已存在的只读文件到此目录并且 overwrite为 False 时,则发生一个错误。 

如果 source 使用的通配符不能和任何文件夹匹配,也发生一个错误。

CopyFolder 方法停止在它遇到的第一个错误上。不要尝试回卷错误发生前所做的任何改变。

CreateFolder 方法

描述

创建一个文件夹。

语法

object.CreateFolder(foldername) 

CreateFolder 方法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

foldername必需的。字符串表达式,它标识创建的文件夹。

说明

如果指定的文件夹已经存在,则发生一个错误。

CreateTextFile 方法

描述

创建一个指定的文件名并且返回一个用于该文件读写的 TextStream 对象。

语法

object.CreateTextFile(filename[, overwrite[, unicode]]) 

CreateTextFile 方法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 或 Folder 对象的名字。

filename必需的。字符串表达式,它标识创建的文件。

overwrite可选的。Boolean 值,表示一个已存在文件是否可被覆盖。如果可被覆盖其值为 True,其值为 False 时不能覆盖。如果它被省略,则已存在文件不能覆盖。

unicode可选的。Boolean 值,表示文件是作为一个 Unicode 文件创建的还是作为一个ASCII 文件创建的。如果作为一个 Unicode 文件创建,其值为 True,作为一个 ASCII 文件创建,其值为 False。如果省略的话,则认为是一个 ASCII 文件。

说明

下面的代码举例说明如何使用 CreateTextFile 方法创建和打开文本文件。

Sub CreateAfile

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set a = fs.CreateTextFile("c:\estfile.txt", True)

    a.WriteLine("This is a test.")

    a.Close

End Sub

对于一个已经存在的 filename,如果 overwrite 参数是 False 或者没有提供,则发生一个错误。

DeleteFile 方法

描述

删除一个指定的文件。

语法

object.DeleteFile filespec[, force]

DeleteFile 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

filespec必需的。要删除文件的名字。Filespec 可以在最后的路径部件中包含通配符。

force可选的。Boolean 值,如果要删除具有只读属性设置的文件,其值为 True。如果其值为 False (缺省),则不能删除具有只读属性设置的文件。

说明

如果没有发现相匹配的文件,则产生一个错误。DeleteFile 方法停在它遇到的第一个错误上。不要尝试回卷或撤消错误发生前所做的任何改变。

DeleteFolder 方法

描述

删除一个指定的文件夹和它的内容。

语法

object.DeleteFolder folderspec[, force] 

DeleteFolder 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

folderspec必需的。要删除的文件夹的名字。 Folderspec 可以在最后的路径部件中包含通配符。

force可选的。Boolean 值,如果要删除具有只读属性设置的文件夹,其值为 True,如果值为 False (缺省),则不能删除具有只读属性设置的文件夹。

说明

DeleteFolder方法对文件夹中有无内容不做区别。不管指定的文件夹中是否有内容,它都被删除。

如果没有发现相匹配的文件夹,则发生一个错误。DeleteFolder 方法停止在它遇到的第一个错误上,不要尝试回卷或撤消错误发生前所做的任何改变。

DriveExists 方法

描述

如果指定的驱动器存在,返回 True,如果不存在返回 False。

语法

object.DriveExists(drivespec) 

DriveExists 方法语法有如下几部分:

部分描述
Object必需的。始终是一个 FileSystemObject 的名字。

Drivespec必需的。一个驱动器字符或一个完整的路径说明。
说明

对于可删除介质的驱动器,即使没有介质存在, DriveExists 方法也返回 True。使用 Drive 对象的 IsReady 属性确定驱动器是否准备好。

FileExists 方法

描述

如果指定的文件存在,返回 True,若不存在,则返回 False。

语法

object.FileExists(filespec) 

FileExists 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

filespec必需的。要确定是否存在的文件的名字。如果认为文件不在当前文件夹中,必须提供一个完整的路径说明(绝对的或相对的)。
FolderExists 方法

描述

如果指定的文件夹存在返回 True,不存在返回 False。

语法

object.FolderExists(folderspec) 

FolderExists 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 对象的名字。

folderspec必需的。要确定是否存在的文件夹名字。如果认为文件夹不在当前文件夹中,必须提供一个完整的路径说明(绝对的或相对的)。
GetAbsolutePathName 方法

描述

从提供的路径说明中返回一个完整、明确的路径。

语法

object.GetAbsolutePathName(pathspec) 

GetAbsolutePathName 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

pathspec必需的。要改变到一个完整、明确路径的路径说明。
说明

一个路径如果提供了从指定驱动器根目录的一个完整引用,则该路径是完整、明确的。一个完整的路径如果指定一个被映射驱动器的根文件夹,它只能以路径分隔符(\\)为结尾。

假设当前目录是 c:\\mydocuments\\reports,下面的表说明了 GetAbsolutePathName 方法的行为。

Pathspec返回的路径
"c:""c:\\mydocuments\\reports"
"c:..""c:\\mydocuments"
"c:\\\\\\""c:\\"
"c:*.*\\may97""c:\\mydocuments\\reports\\*.*\\may97"
"region1""c:\\mydocuments\\reports\\region1"
"c:\\..\\..\\mydocuments""c:\\mydocuments"
GetBaseName 方法

描述

返回一个包含路径中最后部件的基本名字(去掉任何文件扩展名)的字符串。

语法

object.GetBaseName(path) 

GetBaseName 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

path必需的。 要返回其基本名字的部件的路径说明。
说明

如果没有部件和 path 参数匹配,GetBaseName 方法返回一个长度为零的字符串("")。

注意   GetBaseName 方法只对提供的 path 字符串起作用。它既不试图去辨认路径,也不检查指定路径是否存在。

GetDrive 方法

描述

返回一个与指定路径中的驱动器相对应的 Drive 对象。

语法

object.GetDrive drivespec

GetDrive 方法语法有如下几部分:

部分描述
Object必需的。始终是一个 FileSystemObject 的名字。

Drivespec必需的。drivespec参数可以是一个驱动器字符(c)、一个驱动器字符加一个冒号(c:)、一个驱动器字符加冒号和路径分隔符(c:\\)或任何网络共享的说明(\\\\computer2\\share1)。

说明

对于网络共享,要进行检查以确保共享存在。

如果 drivespec 不符合任何一种可以接受的形式或者不存在,则发生一个错误。

对一个普通路径字符串调用 GetDrive 方法,使用下面步骤得到一个适合作为 drivespec 使用的字符串:

DriveSpec = GetDriveName(GetAbsolutePathName(Path))

GetDriveName 方法

描述

返回一个包含指定路径的驱动器名字的字符串。

语法

object.GetDriveName(path) 

GetDriveName 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

path必需的。要返回其驱动器名字的部件的路径说明。
说明

如果驱动器不能确定,GetDriveName 方法返回一个长度为零的字符串("")。

注意   GetDriveName 方法只对提供的路径字符串起作用。它没有尝试去辨认路径,也不对指定路径是否存在进行检查。

GetExtensionName 方法

描述

返回一个包含路径中最后部件扩展名的字符串。

语法

object.GetExtensionName(path) 

GetExtensionName 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

path必需的。.要返回其扩展名的部件的路径说明。
说明

对于网络驱动器,根目录(\)被认为是一个部件。

如果没有部件和 path 参数相匹配,GetExtensionName 方法返回一个长度为零的字符串 ("")。

GetFile 方法

描述

返回一个和指定路径中文件相对应的 File 对象。.

语法

object.GetFile(filespec) 

GetFile 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject. 的名字。

filespec必需的。Filespec 是到一个指定文件的路径(绝对的或相对的)。

说明

如果指定的文件不存在,则发生一个错误。

GetFileName 方法

描述

返回指定路径中的最后部件,该路径不是驱动器说明的一部分。

语法

object.GetFileName(pathspec) 

GetFileName 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

pathspec必需的。到一个指定文件的路径(绝对的或相对的)。
说明

如果 pathspec 不是以已命名部件结尾,GetFileName 方法返回一个零长度字符串("")。

注意   GetFileName 方法仅在提供的路径字符串上起作用。它没有尝试去辨认路径,也不对指定路径是否存在进行检查。

GetFolder 方法

描述

返回一个和指定路径中文件夹相对应的 Folder 对象。

语法

object.GetFolder(folderspec) 

GetFolder方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject. 的名字。

folderspec必需的。Folderspec 是指定文件夹的路径(绝对的和相对的)。

说明

如果指定的文件夹不存在,则发生一个错误。

GetParentFolderName 方法

描述

返回一个包含指定路径最后部件父文件夹名字的字符串。

语法

object.GetParentFolderName(path) 

GetParentFolderName 方法语法有如下几部分:

部分描述
object必需的。始终是 一个 FileSystemObject 的名字。

path必需的。要返回其父文件夹名字的部件的路径说明。
说明

如果 path 参数指定的部件没有父文件夹,则 GetParentFolderName 方法返回一个零长度字符串("")。

注意   GetParentFolderName 方法仅对提供的 path 字符串起作用。它没有尝试去辨认路径,也不对指定路径是否存在进行检查。

GetSpecialFolder 方法

描述

返回指定的特殊文件夹。

语法

object.GetSpecialFolder(folderspec) 

GetSpecialFolder 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

folderspec必需的。要返回的特殊文件夹的名字。可以是在设置值部分中列出的任何常数。
设置值

folderspec 参数可为任何的下列值:

常数描述
WindowsFolder0Windows 文件夹,包含由 Windows 操作系统安装的文件。
SystemFolder1系统文件夹,包含库、字体、设备驱动程序。
TemporaryFolder2Temp 文件夹,用于存储临时文件。它的路径在 TMP 环境变量中。
GetTempName 方法

描述

返回一个随机产生的临时文件或文件夹的名字,该名字在执行需要临时文件或文件夹的操作时有用。

语法

object.GetTempName 

可选的 object 始终是一个 FileSystemObject. 的名字。

说明

GetTempName 方法不产生一个文件,它仅提供一个临时文件名字,该名字可被 CreateTextFile 用于创建一个文件。

MoveFile 方法

描述

将一个或多个文件从一个地方移动到另一个地方。

语法

object.MoveFile source, destination 

MoveFile 方法语法有如下几部分:

部分描述
Object必需的。始终是一个 FileSystemObject 的名字。

Source必需的。一个或多个要移动文件的路径。Source 参数字符串只能在路径的最后部件中包含通配符。

destination必需的。一个或多个文件要移动到的目标路径。 Destination 参数不能包含通配符。

说明

如果 source 包含通配符或 destination 以路径分隔符 (\\) 为结尾,则认为 destination 指定了一个存在的文件夹,在此文件夹中移动相匹配的文件。否则,认为 destination 是一个要创建的目标文件名。在上面任一情况下,当移动一个文件时可能出现三种事件。 

∙如果 destination 不存在,文件得到移动。这是通常的情况。

∙如果 destination 是一个已存在文件,则发生一个错误。

∙如果 destination 是一个目录,则发生一个错误。 

如果一个在 source 中使用的通配符不能和任何一个文件匹配,也发生一个错误。 MoveFile 方法停止在它遇到的第一个错误上。不要尝试回卷错误发生前所做的任何改变。 

重点   只有操作系统支持的情况下,这个方法才允许在卷之间移动文件。

MoveFolder 方法

描述

将一个或多个文件夹从一个地方移动到另一个地方。

语法

object.MoveFolder source, destination

MoveFolder 方法语法有如下几部分:

部分描述
object必需的。始终是一个 FileSystemObject 的名字。

source必需的。一个或多个要移动的文件夹路径。Source 参数字符串只能在路径的最后部件中包含通配符。

destination必需的。一个或多个文件夹要移动到的目标路径。Destination 参数不能包含通配符。

说明

如果 source 包含通配符或 destination 以路径分隔符 (\) 为结尾,则认为 destination 指定了一个已存在的文件夹,在此文件夹中移动相匹配的文件。否则,认为 destination 是一个要创建的目标文件夹名字。在上面的任一种情况下,当一个文件夹被移动时可能出现三种情况。 

∙如果 destination 不存在,文件夹得到移动。这是通常的情况。

∙如果 destination 是一个已存在文件,则发生一个错误。

∙如果 destination 是一个目录,则发生一个错误。 

如果 source 中使用的一个通配符不能和任何文件夹相匹配,也发生一个错误。MoveFolder 方法停止在它遇到的第一个错误上。不要尝试回卷在错误发生前所做的任何改变。

重点   只有在操作系统支持的情况下,这个方法才允许文件夹在卷之间移动。

OpenTextFile 方法

描述

打开一个指定的文件并返回一个 TextStream 对象,该对象可用于对文件进行读操作或追加操作。

语法

object.OpenTextFile(filename[, iomode[, create[, format]]]) 

OpenTextFile 方法有如下几部分:

部分描述
Object必需的。始终是一个 FileSystemObject 的名字。

filename必需的。字符串表达式,它标识了打开的文件。

iomode可选的。表示输入/输出方式。可为两个常数之一:ForReading或 ForAppending。

create可选的。Boolean 值,它表示如果指定的 filename 不存在是否可以创建一个新文件。如果创建新文件,其值为 True。若不创建文件其值为 False。缺省值为 False。

format可选的。三种 Tristate 值之一,用于指示打开文件的格式。如果省略,则文件以 ASCII 格式打开。

设置值

iomode 参数可为下面设置值的任何一个:

常数描述
ForReading1打开一个只读文件。不能对此文件进行写操作。
ForAppending8打开一个文件并写到文件的尾部。
Format 参数可为下面设置值的任何值:

常数描述
TristateUseDefault–2使用系统缺省打开文件。
TristateTrue–1以 Unicode 格式打开文件。
TristateFalse0以 ASCII 格式打开文件。
说明

下面的代码举例说明了使用 OpenTextFile 方法打开一个用于追加文本的文件:

Sub OpenTextFileTest

    Const ForReading = 1, ForWriting = 2, ForAppending = 3

    Dim fs, f

    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.OpenTextFile("c:\estfile.txt", ForAppending,TristateFalse)

    f.Write "Hello world!"

    f.Close

End Sub下载本文

显示全文
专题