Excel VBA常用技巧 第10章 文件操作 下载本文

VBA常用技巧代码解析

TempFolder过程使用MkDir语句在示例所在的文件夹中创建“Temp”文件夹。MkDir语句创建一个新的目录或文件夹,语法如下:

MkDir path

参数path是必需的,指定所要创建的目录或文件夹的字符串表达式,可以包含驱动器。如果没有指定驱动器,则在当前驱动器上创建新的目录或文件夹。

第2行代码启动错误处理程序,因为在创建过程中如果文件夹中已存在相同名称的“Temp”文件夹会发生 “路径未找到”错误,所以使用On Error Resume Next语句忽略错误。

第3行代码使用MkDir语句创建“Temp”文件夹。

如果需要删除不需要的文件夹可以使用RmDir语句,如下面的代码所示。

#001 Sub RmFolder()

#002 On Error Resume Next

#003 RmDir ThisWorkbook.Path & \#004 End Sub

代码解析:

RmFolder过程使用RmDir语句删除在示例所在的文件夹中创建“Temp”文件夹。RmDir语句删除一个存在的目录或文件夹,语法如下:

RmDir path

参数path是必需的,指定所要创建的目录或文件夹的字符串表达式,可以包含驱动器。如果没有指定驱动器,则在当前驱动器上创建新的目录或文件夹。

第2行代码启动错误处理程序,因为在使用RmDir语句删除并不存在的文件夹或删除含有文件的文件夹时会发生 “路径未找到”错误,所以使用On Error Resume Next语句忽略错误。

第3行代码使用RmDir语句删除“Temp”文件夹。如果“Temp”文件夹中含有文件可以在删除文件夹之前,先使用Kill语句来删除所有文件,请参阅技巧9 。

技巧7 重命名文件或文件夹

使用Name语句可以重命名文件或文件夹,如下面的代码所示。

#001 Sub Filename()

13

VBA常用技巧代码解析

#002 On Error Resume Next

#003 Name ThisWorkbook.Path & \#004 Name ThisWorkbook.Path & \As ThisWorkbook.Path & \

#005 End Sub

Filename过程使用Name语句重命名示例文件所在文件夹中的“123”文件夹和“123.xls”Excel文件并将重命名后的Excel文件移动到重命名后的文件夹中。

Name语句重新命名一个文件、目录、或文件夹,语法如下:

Name oldpathname As newpathname

参数oldpathname是必需的,字符串表达式,指定已存在的文件名和位置,可以包含目录或文件夹、以及驱动器。

参数newpathname是必需的,字符串表达式,指定新的文件名和位置,可以包含目录或文件夹、以及驱动器。

第2行代码启动错误处理程序,因为在重命名过程中如果参数oldpathname指定的文件或文件夹不存在会发生 “文件未找到”错误,所以使用On Error Resume Next语句忽略错误。

第3行代码使用Name语句将示例文件所在文件夹中的“123”文件夹重命名为“ABC”文件夹。

第4行代码使用Name语句将示例文件所在文件夹中的“123.xls”Excel文件重命名为“ABC.xls”文件并移动到“ABC”文件夹中。

在运行Filename过程前请确认示例文件所在文件夹中包含一个“123”文件夹和一个“123.xls”Excel文件。

技巧8 复制指定的文件

如果需要把文件从一个地方复制到另一个地方,可以使用FileCopy语句复制文件,如下面的代码所示。

#001 Sub CopyFile()

#002 Dim SourceFile As String #003 Dim DestinationFile As String

14

VBA常用技巧代码解析

#004 SourceFile = ThisWorkbook.Path & \

#005 DestinationFile = ThisWorkbook.Path & \#006 FileCopy SourceFile, DestinationFile #007 End Sub

代码解析:

CopyFile过程使用FileCopy语句将示例文件所在文件夹中的“123.xls”Excel文件复制到示例文件目录下的“ABC”文件夹中并重新命名为“abc.xls”。

FileCopy语句复制一个文件,语法如下:

FileCopy source, destination

Source参数是必需的,字符串表达式,用来表示要被复制的文件名。source参数可以包含目录或文件夹、以及驱动器。

destination参数是必需的,字符串表达式,用来指定要复制的目地文件名。destination参数 可以包含目录或文件夹、以及驱动器。

注意 不能对一个已打开的文件使用 FileCopy 语句,否则会产生错误。 第4行代码指定被复制的文件名称和路径。

第5行代码指定目的文件名称和路径,如果已存在相同名称的文件则会覆盖原文件。 第6行代码使用FileCopy语句复制文件。

技巧9 删除指定的文件

使用Kill方法删除指定的文件,如下面的代码所示。

#001 Sub KillFile()

#002 Dim myFile As String

#003 myFile = ThisWorkbook.Path & \#004 If Dir(myFile) <> \#005 End Sub

代码解析:

KillFile过程使用Kill方法示例文件所在文件夹中的“123.xls”文件。

15

VBA常用技巧代码解析

第3行代码指定所要删除文件的路径和文件名称。

第4行代码使用Dir函数返回指定文件名,(关于Dir函数请参阅技巧4 )如果存在该文件则使用Kill语句删除。Kill语句从磁盘中删除文件,语法如下:

Kill pathname

参数pathname是必需的,用来指定一个文件名的字符串表达式,可以包含目录或文件夹、以及驱动器。

在Microsoft Windows中,Kill方法支持多字符 (*) 和单字符(?)的统配符来指定多重文件,如需要删除当前目录下所有*. Xls文件可以使用下面的代码:

Kill \

注意 使用Kill方法不能删除已打开的文件,否则会产生错误。

技巧10 搜索特定的文件

如果需要对文件夹中所有的Excel文件进行相同的操作,那么可以使用Execute方法进行文件搜索,示例代码如下所示。

#001 Sub Sort() #002 Dim i As Byte

#003 Application.ScreenUpdating = False #004 With Application.FileSearch #005 .LookIn = ThisWorkbook.Path

#006 .FileType = msoFileTypeExcelWorkbooks #007 If .Execute > 0 Then

#008 For i = 1 To .FoundFiles.Count

#009 If .FoundFiles(i) <> ThisWorkbook.FullName Then #010 Workbooks.Open .FoundFiles(i) #011 With ActiveWorkbook

#012 .Sheets(\最后打开时间:\Now

#013 .Close True

16