VBA常用技巧代码解析 TextCodepage, TextVisualLayout, Local)
其中参数Filename表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。
其中参数FileFormat指定保存文件时使用的文件格式,在本例中指定为xlCSV即保存为文本文件。
第12行代码使用Close方法关闭活动工作簿。
技巧3 文件修改的日期和时间
在VBA过程中如果需要获得文件最后修改的日期和时间,可以使用FileDateTime函数,如下面的代码所示。
#001 Sub myDateTime() #002 Dim Stmp As String #003 Dim myDateTime As Date
#004 Stmp = ThisWorkbook.Path & \#005 myDateTime = FileDateTime(Stmp)
#006 MsgBox Stmp & \最后修改时间是:\#007 End Sub
代码解析:
myDateTime过程使用消息框显示文件最后修改的日期和时间。
FileDateTime函数返回一个文件被创建或最后修改后的日期和时间,语法如下:
FileDateTime(pathname)
pathname 参数是必需的,用来指定文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。
第4行代码使用变量Stmp保存代码所在工作簿的路径和名称。
第5行代码使用变量myDateTime保存FileDateTime函数返回的日期和时间。 运行myDateTime过程结果如图 3-1所示。
9
VBA常用技巧代码解析
图 3-1 文件最后修改的日期和时间
技巧4 查找文件或文件夹
在磁盘中查找文件或文件夹,可以使用Dir函数,如下面的代码所示。
#001 Sub mydir()
#002 Dim mydir As String #003 Dim b As Byte #004 b = 1
#005 Range(\
#006 mydir = Dir(ThisWorkbook.Path & \#007 Do While mydir <> \#008 Cells(b, 1) = mydir #009 mydir = Dir #010 b = b + 1 #011 Loop #012 End Sub
代码解析:
Mydir过程使用Dir函数在代码所在工作簿的文件夹中查找所有的Excel文件,找到后写入到工作表的A列单元格中。
第2行代码声明变量mydir保存返回的文件名称。 第3行代码声明变量b保存返回的文件数目。 第4行代码设置变量b的初始值。 第5行代码清除A列所有数据。
10
VBA常用技巧代码解析
第6行代码使用Dir函数在代码所在工作簿的文件夹中查找Excel文件。Dir函数返回一个String,用以表示一个文件名、目录名或文件夹名称,语法如下:
Dir[(pathname[, attributes])]
参数pathname是可选的,用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到pathname,则会返回零长度字符串 (\。
参数attributes是可选的,常数或数值表达式,其总和用来指定文件属性,如表格 4-1所示。如果省略,则会返回不包含属性的匹配文件。
常数 vbNormal vbReadOnly vbHidden VbSystem vbVolume 值 0 1 2 4 8 描述 (缺省) 指定没有属性的文件。 指定无属性的只读文件。 指定无属性的隐藏文件。 指定无属性的系统文件,在Macintosh中不可用。 指定卷标文件;如果指定了其它属性,则忽略。vbVolume 在Macintosh中不可用。 vbDirectory vbAlias 16 64 指定无属性文件及其路径和文件夹。 指定的文件名是别名,只在Macintosh上可用。 表格 4-1 attributes设置值
注意 在第一次调用Dir函数时,必须指定pathname,否则会产生错误。
第7行到第11行代码将返回的文件名称写入到A列单元格中。Dir函数会返回匹配 pathname参数的第一个文件名,若想得到其他匹配pathname参数的文件名,需再一次调用Dir函数,且不要使用参数。如果已没有合乎条件的文件,则Dir函数会返回一个零长度字符串 (\。
运行Mydir过程工作表中如图 4-1所示。
图 4-1 使用Dir函数返回文件名称
11
VBA常用技巧代码解析
技巧5 获得当前文件夹的名称
在处理文件时经常需要获得当前文件夹的名称,此时可以使用CurDir函数,如下面的代码所示。
#001 Sub CurFolder() #002 MsgBox CurDir(\#003 End Sub
CurFolder过程使用消息框显示F盘中的当前文件夹名称。
CurDir函数返回一个Variant类型的文件路径。如果需要返回字符串类型的文件路径则使用CurDir$,语法如下:
CurDir[(drive)]
参数drive是可选的,字符串表达式,指定一个存在的驱动器。如果没有指定驱动器,或参数drive 是零长度字符串 (\,则CurDir函数会返回当前驱动器的路径。
假设示例文件保存在F盘的“VBA常用技巧\\示例文件\\第10章 文件操作”文件夹中,运行CurFolder过程结果如图 5-1所示。
图 5-1 获得当前文件夹的名称
技巧6 创建和删除文件夹
可以在程序运行时创建和删除文件夹,如下面的代码所示。
#001 Sub TempFolder()
#002 On Error Resume Next
#003 MkDir ThisWorkbook.Path & \#004 End Sub
代码解析:
12