Excel VBA 编程基础 -- 现代文件处理(二)前文我们讨论了关于驱动器的操作,今天我们来看看文件夹。FSO.GetFolder 方法FSO.GetFolder 方法用来从指定的路径中获得文件夹对象 Folder。其一般格式是:FSO.GetFolder(path)其中,path 是指定的路径,该路径可以是绝对路径,也可以是相对路径。如果 path 指定的路径不存在,将引发错误。Folder 对象Folder 对象提供了操作文件夹的所有工具。Folder 对象的属性列表如下:表1 Folder 对象属性列表由表可见,只要我们获得了一个文件夹的 Folder 对象,就可以获取或设置文件夹的一些特性(Attributes。参照一般译法,property 译为“属性”,attribute 译为“特性”)。譬如,可以更改文件夹的名字,可以设置文件夹为只读,或设置其为系统文件夹,等等。文件夹对象的 Size 属性返回该文件夹内以及子文件夹内所有文件大小的总和,以字节为单位。例1. Folder 对象用法示例图1 Folder 对象用法示例首先,通过 FSO.GetFolder 方法获得 Folder 对象,然后枚举其目录结构。为了简单,例中假设 D:\VBA_files 文件夹只具有二级结构。如果目录层级未知,则需要使用递归枚举才能完整地枚举出所有的目录结构。接下来是反向枚举。从最底层的文件夹开始,依次通过 ParentFolder 属性获取当前文件夹的父文件夹,如此逐级向上,直到根目录的 ParentFolder 属性值为 Nothing 为止。FSO.CreateFolder 方法FSO.CreateFolder 用来新建一个文件夹。其一般格式是:FSO.CreateFolder(foldername)其中,foldername 是要创建的文件夹名。如果 foldername 已经存在,将引发错误。如果创建成功,则返回新创建的文件夹的 Folder 对象。FSO.DeleteFolder 方法FSO.DeleteFolder 用来删除文件夹及其内容。其一般格式是:FSO.DeleteFolder folderspec [, force ]其中,folderspec 指定要删除的文件夹。folderspec 中可以包含通配符(wildcards),关于通配符,请参阅文末相关阅读中的《文件处理(二)》,此不赘述。可选参数 force 是 Boolean 类型,True 表示对于设有只读标记的文件夹也一并删除,False 表示不删除设有只读标记的文件夹。如果指定的文件夹不存在,则 FSO.DeleteFolder 引发错误,然后返回,已删除的不再恢复。FSO.DeleteFolder 方法不关心要删除的文件夹中是否有内容(文件或子文件夹),都一并删除。所以,在调用此方法删除文件夹时,一定要确保文件夹内没有需要保留的内容。例2. CreateFolder & DeleteFolder 用法示例图2 CreateFolder & DeleteFolder 用法示例首先,使用 FSO.CreateFolder 新建一个文件夹。然后从该文件夹开始,逐级向上回溯,自底向上枚举出整个目录结构。接着,使用 FSO.DeleteFolder 删除刚刚建立的文件夹。最后,使用 FSO.GetFolder 来获取该文件夹,因为该文件夹已删除,因此引发错误。Folder 对象自己也有一个 Delete 方法,可以调用此方法来让 Folder 删除自身。其一般格式是:Folder.Delete [ force ]其中,可选参数 force 与 FSO.DeleteFolder 方法中的 force 参数一样。使用 Folder.Delete 方法可以将例2 重写如下。例3. 使用 Folder.Delete 重写例2图3 使用 Folder.Delete 重写例2由图可见,在 fld.Delete 方式执行之后,fld 对象仍在(fld Is Nothing 返回 False)。但在下面的监视窗口中可以看到,fld 对象的所有属性都已经不能访问。因为 fld 对象赖以存在的基础已经被删除了。相关阅读Excel VBA 编程基础 -- 现代文件处理(一)Excel VBA 编程基础 -- 文件处理(二)