VBA中返回和設(shè)置文件屬性

2021-12-08 14:31 更新
文件和文件夾具有類似“只讀”,“隱藏”,“系統(tǒng)”和“檔案”的特點(diǎn)。這些特點(diǎn)就是屬性??梢允褂肎etAttr函數(shù)來(lái)獲得文件或文件夾的屬性。該函數(shù)的唯一參數(shù)就是文件或文件夾路徑名:
GetAttr(文件路徑名)


上面的函數(shù)返回一個(gè)整數(shù),代表下面顯示的常量中的一個(gè)或多個(gè)常量之和。


文件和文件夾屬性


要知道某文件是否具有上述的屬性,可以使用AND運(yùn)算符來(lái)比較GetAttr函數(shù)的結(jié)果和常量數(shù)值。如果函數(shù)返回一個(gè)非零數(shù)值,那么該文件或文件夾具有和你測(cè)試的屬性一樣的屬性。


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


現(xiàn)在,我們來(lái)將這些信息一起放在一個(gè)過(guò)程里:

1. 插入新模塊,并重命名為GetAttrFunction


2. 輸入下述過(guò)程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. 當(dāng)你運(yùn)行上面的過(guò)程時(shí),你將看到如圖8-1的信息框


GetAttr函數(shù)

圖8-1 使用GetAttr函數(shù)可以獲得任何文件的屬性


GetAttr函數(shù)的相反函數(shù)是SetAttr函數(shù),它允許你設(shè)置一個(gè)文件或文件夾的屬性。語(yǔ)法如下:
SetAttr 文件路徑名, 屬性


文件路徑名確定你要設(shè)置的文件或文件夾,第二個(gè)參數(shù),屬性,是一個(gè)或多個(gè)你要設(shè)置的屬性常量。
參見表8-1本章前面介紹的常量清單。


假設(shè)你有一個(gè)叫做“C:\stamps.txt”的文件,并且要設(shè)置兩個(gè)屬性,“只讀”和“隱藏”。在立即窗口里輸入下述指令來(lái)設(shè)置文件屬性(可以找個(gè)你硬盤上存在的文件來(lái)試驗(yàn)):

SetAttr "C:\stamps.txt", vbReadOnly + vbHidden

技巧:調(diào)用SetAttr語(yǔ)句
你不能給打開的文件設(shè)置屬性,在使用SetAttr函數(shù)之前,你必須關(guān)閉該文件。

更改缺省文件夾或驅(qū)動(dòng)器(ChDir 語(yǔ)句和ChDrive語(yǔ)句)

使用ChDir語(yǔ)句,你可以輕易更改缺省文件夾,例如:
ChDir Path

在上面的語(yǔ)句中,Path是新的缺省文件夾名稱。Path可以包含驅(qū)動(dòng)器名稱。如果Path沒有包括驅(qū)動(dòng)名稱,那么缺省文件夾將會(huì)更改為當(dāng)前驅(qū)動(dòng)。當(dāng)前驅(qū)動(dòng)不變。
假設(shè)缺省文件夾為“C:\DOS”,語(yǔ)句:
ChDir "D:\MyFiles"

將缺省文件夾更改為“D:\MyFiles”,然而,當(dāng)前驅(qū)動(dòng)仍然是C盤。

要更改當(dāng)前驅(qū)動(dòng)的話,你就應(yīng)該使用ChDrive語(yǔ)句,按如下格式:
ChDrive 驅(qū)動(dòng)

“驅(qū)動(dòng)”是你將要設(shè)置的新的缺省驅(qū)動(dòng)名稱。例如,在立即窗口里輸入下述指令將缺省驅(qū)動(dòng)設(shè)置為D驅(qū)或者E驅(qū):

ChDrive "D"

或者

ChDrive "E"

如果你指向一個(gè)并不存在的驅(qū)動(dòng),你就會(huì)看到一個(gè)信息框“設(shè)備不可用”



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)