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