codecamp

VBA中返回和设置文件属性

文件和文件夹具有类似“只读”,“隐藏”,“系统”和“档案”的特点。这些特点就是属性。可以使用GetAttr函数来获得文件或文件夹的属性。该函数的唯一参数就是文件或文件夹路径名:
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的信息框


GetAttr函数

图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"

如果你指向一个并不存在的驱动,你就会看到一个信息框“设备不可用”



VBA操作文件和文件夹步骤
VBA中创建和删除文件夹
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }