Excel-VBA操作文件四大方法之三
三、利用FileSystemObject对象来处理文件
FileSystemObject对象模型,是微软提供的专门用来访问计算机文件系统的,具有大量的属性、方法和事件。其使 用面向对象的“hod”语法来处理文件夹和文件,使用起来十分方便(需Office 2000以后版本)。FileSystemObject并不是VBA的一部分,它是以一个COM组件的形式提供的。因此,要使用先要创建 FileSystemObject对象。
FileSystemObject对象模型包含了下面的对象和集合:
·FileSystemObject 主对象,包含用来创建、删除和获得有关信息,以及用来操作驱动器、文件夹和文件的方法和属性。
·Drive 对象,包含用来获得信息的方法和属性,这些信息是关于连接在系统上的驱动器的,如有多少可用空间等。驱动器不一定是硬盘,也可以是CD-ROM、U盘甚至是通过网络在逻辑上连接的硬盘(如公司里部门共享的服务器网络硬盘)。
·Drives 集合,提供驱动器的列表,这些驱动器以实物或在逻辑上与系统相连接。Drives集合包括所有驱动器,与类型无关。
·File 对象,包含用来创建、删除或移动文件的方法和属性。
·Files 集合,提供包含在文件夹内的所有文件的列表。
·Folder 对象,包含用来创建、删除或移动文件夹的方法和属性。
·Folders 集合,提供包含在文件夹内的所有文件夹的列表。
·TextStream 对象,用来读写文本文件。
(一)准备工作
要使用FileSystemObject对象,先要创建它。创建FileSystemObject对象要使用CreatObject函数。CreateObject 函数用来创建并返回一个对 ActiveX 对象的引用。
语法:CreateObject(class,[servername])
class 是要创建的应用程序名称和类。
servername 要在其上创建对象的网络服务器名称。(如果要在远程计算机上创建对象才用)
class 是要创建的应用程序名称和类。
servername 要在其上创建对象的网络服务器名称。(如果要在远程计算机上创建对象才用)
class 参数使用 appname.objecttype 这种语法,包括以下部分:
appname 必需的;提供该对象的应用程序名。
objecttype 必需的;待创建对象的类型或类。
objecttype 必需的;待创建对象的类型或类。
因此,我们用下面的代码创建FileSystemObject对象:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fso = CreateObject("Scripting.FileSystemObject")
Scripting是类型库的名称,FileSystemObject就是要创建的对象的名字。
同样我们可以创建Dictionary 对象如下:
Dim d
Set d = CreateObject("Scripting.Dictionary")
Set d = CreateObject("Scripting.Dictionary")
(二)FileSystemObject对象的方法
FileSystemObject对象模型中有些功能是重复的,如可用FileSystemObject对象的CpoyFile方法,也可用File对象的Copy方法来复制文件。下面先介绍FileSystemObject对象的方法。
1、GetDrive 方法
语法:object.GetDrive drivespec
drivespec参数可以是一个驱动器字符(c)、一个驱动器字符加一个冒号(c:)、一个驱动器字符加冒号和路径分隔符(c:\)或任何网络共享的说明(\\computer2\share1)。
作用:返回一个与指定路径中的驱动器相对应的 Drive 对象。
示例:
Dim d
Set d = fso.GetDrive("D:") '变量d就代表了驱动器D对象
如果 drivespec 不符合任何一种可以接受的形式或者不存在,则发生一个错误。
Dim d
Set d = fso.GetDrive("D:") '变量d就代表了驱动器D对象
如果 drivespec 不符合任何一种可以接受的形式或者不存在,则发生一个错误。
注意:为简洁,示例中都假定fso是已经创建的FileSystemObject对象
2、GetDriveName 方法
语法:object.GetDriveName(path)
作用:返回一个包含指定路径的驱动器名字的字符串。
示例:
Debug.Print fso.GetDriveName("c:\") '立即窗口显示"c:"
Debug.Print fso.GetDriveName("c:\") '立即窗口显示"c:"
3、GetExtensionName 方法
语法:object.GetExtensionName(path)
作用:返回一个包含路径中最后部件扩展名的字符串。
示例:
Debug.Print fso.GetExtensionName("c:\") '立即窗口显示"txt"
Debug.Print fso.GetExtensionName("c:\") '立即窗口显示"txt"
4、GetBaseName 方法
语法:object.GetBaseName(path)
作用:返回一个包含路径中最后部件的基本名字(去掉任何文件扩展名)的字符串。
示例:
Debug.Print fso.GetBaseName("c:\") '立即窗口显示"test"
Debug.Print fso.GetBaseName("c:\") '立即窗口显示"test"
5、GetAbsolutePathName 方法
语法:object.GetAbsolutePathName(pathspec)
作用:从提供的路径说明中返回一个完整、明确的路径。
示例:
如果pathspec为空字符串"",则返回当前路径。假设当前路径为C:\Documents and Settings\yc\My Documents
如果pathspec为空字符串"",则返回当前路径。假设当前路径为C:\Documents and Settings\yc\My Documents
Debug.Print fs.GetAbsolutePathName("") '显示C:\Documents and Settings\yc\My Documents
Debug.Print fs.GetAbsolutePathName("c:..") '显示C:\Documents and Settings\yc,即上层目录
Debug.Print fs.GetAbsolutePathName("abc") '显示C:\Documents and Settings\yc\My Documents\abc
Debug.Print fs.GetAbsolutePathName("c:\") '显示C:\
6、GetFile 方法
语法:object.GetFile(filespec)
作用:返回一个和指定路径中文件相对应的 File 对象。
示例:
Dim f
Set f = fso.GetFile("c:\") '变量f就代表了文件对象
注意:如果指定的文件不存在,则发生一个错误。ascii文件夹怎么创建
Dim f
Set f = fso.GetFile("c:\") '变量f就代表了文件对象
注意:如果指定的文件不存在,则发生一个错误。ascii文件夹怎么创建
7、GetFileName 方法
语法:object.GetFileName(pathspec)
作用:返回指定路径中的最后部件,该路径不是驱动器说明的一部分。
示例:
Debug.Print fso.GetFileName("c:\") '立即窗口显示""
Debug.Print fso.GetFileName("c:\") '立即窗口显示""
8、GetFolder 方法
语法:object.GetFolder(folderspec)
作用:返回一个和指定路径中文件夹相对应的 Folder 对象。
示例:
Dim fd
Set fd = fso.GetFolder("c:\windows") '变量f就代表了文件夹windows对象
注意:如果指定的文件夹不存在,则发生一个错误。
Dim fd
Set fd = fso.GetFolder("c:\windows") '变量f就代表了文件夹windows对象
注意:如果指定的文件夹不存在,则发生一个错误。
9、GetSpecialFolder 方法
语法:object.GetSpecialFolder(folderspec)
作用:返回指定的特殊文件夹。
说明:
folderspec 参数可为任何的下列值:
folderspec 参数可为任何的下列值:
WindowsFolder 0 Windows 文件夹,包含由 Windows 操作系统安装的文件。
SystemFolder 1 系统文件夹,包含库、字体、设备驱动程序。
TemporaryFolder 2 Temp 文件夹,用于存储临时文件。它的路径在 TMP 环境变量中。
SystemFolder 1 系统文件夹,包含库、字体、设备驱动程序。
TemporaryFolder 2 Temp 文件夹,用于存储临时文件。它的路径在 TMP 环境变量中。
10、GetParentFolderName 方法
语法:object.GetParentFolderName(path)
作用:返回一个包含指定路径最后部件父文件夹名字的字符串。
示例:
Debug.Print fso.GetParentFolderName("c:\") '显示"c:\tmp"
Debug.Print fso.GetParentFolderName("c:\") '显示"c:\tmp"
11、GetTempName 方法
语法:object.GetTempName
作用:返回一个随机产生的临时文件或文件夹的名字,该名字在执行需要临时文件或文件夹的操作时有用。
说明:GetTempName 方法不产生一个文件,它仅提供一个临时文件名字,该名字可被 CreateTextFile 用于创建一个文件。
示例:
Debug.Print fso.GetTempName '显示"p",每次都会变。
Debug.Print fso.GetTempName '显示"p",每次都会变。
12、BuildPath 方法
语法:object.BuildPath(path, name)
作用:追加一个名字到一个已经存在的路径。
示例:
Debug.Print fso.BuildPath("c:\tmp", "abc") '显示"c:\tmp\abc"
Debug.Print fso.BuildPath("c:\tmp", "abc") '显示"c:\tmp\abc"
13、CreateFolder 方法
语法:object.CreateFolder(foldername)
作用:创建一个文件夹。
注意:如果指定的文件夹已经存在,则发生一个错误。
示例:
fso.CreateFolder("c:\myfolder") '在C盘创建一个myfolder文件夹
fso.CreateFolder("c:\myfolder") '在C盘创建一个myfolder文件夹
14、CopyFolder 方法
语法:object.CopyFolder source, destination[, overwrite]
source 必需的。指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。
destination 必需的。指明 source 中被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。
overwrite 可选的。Boolean 值,它表示已存在的文件夹是否被覆盖。如果为 True,文件被覆盖。如果为 False,文件不被覆盖。缺省值为 True。
source 必需的。指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。
destination 必需的。指明 source 中被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。
overwrite 可选的。Boolean 值,它表示已存在的文件夹是否被覆盖。如果为 True,文件被覆盖。如果为 False,文件不被覆盖。缺省值为 True。
作用:复制一个文件夹到另一个地方。
说明:
① 通配符仅可用于 source 参数的最后一个路径部件。
① 通配符仅可用于 source 参数的最后一个路径部件。
例如:fso.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\" 这是可以的。
但不能这样:fso.CopyFolder "c:\mydocuments\*\*", "c:\tempfolder\"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论