VBA中返回和设置文件属性
GetAttr(文件路径名)
上面的函数返回一个整数,代表下面显示的常量中的一个或多个常量之和。
要知道某文件是否具有上述的属性,可以使用AND运算符来比较GetAttr函数的结果和常量数值。如果函数返回一个非零数值,那么该文件或文件夹具有和你测试的属性一样的属性。
C:\MsDos.sys的属性是什么呢?你可以在立即窗口里快速获得:
?getattr("C:\MsDos.sys") AND vbReadOnly
1
?getattr("C:\MsDos.sys") AND vbHidden
2
?getattr("C:\MsDos.sys") AND vbSystem
4
?getattr("C:\MsDos.sys") AND vbArchive
32
现在,我们来将这些信息一起放在一个过程里:
1. 插入新模块,并重命名为GetAttrFunction
2. 输入下述过程GetAttributes:
Sub GetAttributes()
Dim attr As Integer
Dim msg As String
attr = GetAttr("C:\MSDOS.SYS")
msg = ""
If attr AND vbReadOnly Then msg = msg & "Read-Only (R)"
If attr AND vbHidden Then msg = msg & Chr(10) & "Hidden (H)"
If attr AND vbSystem Then msg = msg & Chr(10) & "System (S)"
If attr AND vbArchive Then msg = msg & Chr(10) & "Archive (A)"
MsgBox msg, , "MSDOS.SYS"
End Sub
3. 当你运行上面的过程时,你将看到如图8-1的信息框
图8-1 使用GetAttr函数可以获得任何文件的属性
GetAttr函数的相反函数是SetAttr函数,它允许你设置一个文件或文件夹的属性。语法如下:
SetAttr 文件路径名, 属性
文件路径名确定你要设置的文件或文件夹,第二个参数,属性,是一个或多个你要设置的属性常量。
参见表8-1本章前面介绍的常量清单。
假设你有一个叫做“C:\stamps.txt”的文件,并且要设置两个属性,“只读”和“隐藏”。在立即窗口里输入下述指令来设置文件属性(可以找个你硬盘上存在的文件来试验):
SetAttr "C:\stamps.txt", vbReadOnly + vbHidden
技巧:调用SetAttr语句
你不能给打开的文件设置属性,在使用SetAttr函数之前,你必须关闭该文件。
更改缺省文件夹或驱动器(ChDir 语句和ChDrive语句)
使用ChDir语句,你可以轻易更改缺省文件夹,例如:ChDir Path
在上面的语句中,Path是新的缺省文件夹名称。Path可以包含驱动器名称。如果Path没有包括驱动名称,那么缺省文件夹将会更改为当前驱动。当前驱动不变。
假设缺省文件夹为“C:\DOS”,语句:
ChDir "D:\MyFiles"
将缺省文件夹更改为“D:\MyFiles”,然而,当前驱动仍然是C盘。
要更改当前驱动的话,你就应该使用ChDrive语句,按如下格式:
ChDrive 驱动
“驱动”是你将要设置的新的缺省驱动名称。例如,在立即窗口里输入下述指令将缺省驱动设置为D驱或者E驱:
ChDrive "D"
或者
ChDrive "E"
如果你指向一个并不存在的驱动,你就会看到一个信息框“设备不可用”