VBA中返回和設置文件屬性

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


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


文件和文件夾屬性


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


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)在,我們來將這些信息一起放在一個過程里:

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函數(shù)

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


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


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


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

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

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

更改缺省文件夾或驅動器(ChDir 語句和ChDrive語句)

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

在上面的語句中,Path是新的缺省文件夾名稱。Path可以包含驅動器名稱。如果Path沒有包括驅動名稱,那么缺省文件夾將會更改為當前驅動。當前驅動不變。
假設缺省文件夾為“C:\DOS”,語句:
ChDir "D:\MyFiles"

將缺省文件夾更改為“D:\MyFiles”,然而,當前驅動仍然是C盤。

要更改當前驅動的話,你就應該使用ChDrive語句,按如下格式:
ChDrive 驅動

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

ChDrive "D"

或者

ChDrive "E"

如果你指向一個并不存在的驅動,你就會看到一個信息框“設備不可用”



以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號