[VBA] FileSystem 應用 (2) - 檔案比對 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- OFFICE 相 關 軟 體 討 論 版


PCZONE 討論區



通知

-- OFFICE 相 關 軟 體 討 論 版 Word、Excel、PowerPoint、Access、Outlook、FrontPage或Office XP等的問題解答與經驗分享

Take it easy~
[VBA] FileSystem 應用 (2) - 檔案比對
這個也是網友問我的:
 
存檔時如何得知其他幾個資料夾裡已有相同名稱的檔案存在
(已存在檔案有可能是隱藏的屬性) ??
 
可在巨集中使用 FileSystem 物件來搜尋比對, 會包含隱藏檔.
假設這五個資料夾位於 C:\My Documents。
 
Sub 檢查檔案()
1  檔名 = InputBox("請輸入檔名 (包含副檔名):")
2  If 檔名 = "" Then Cancel = True: Exit Sub
3  Set fs = CreateObject("Scripting.FileSystemObject")
4  Set sf = fs.GetFolder("C:\My Documents").SubFolders
5  For Each f In sf
6   For Each f1 In f.Files
7    If f1.Name = 檔名 Then
8    MsgBox 檔名 & " 已存在於 " & f.Name & " 資料夾!"
9    a = 1: Exit For
10   End If
11  Next
12 Next
13 If a = 1 Then Cancel = True
End Sub
 
說明
 
1 設定變數 "檔名" = 文字方塊的傳回值
2 若文字方塊傳回空字串則結束程式
3 設物件變數 fs = FileSystemObject (磁蹀檔案系統)
4 設物件變數 sf = C:\My Documents 底下的所有子資料夾
5 對子資料夾集合 sf 中的每個資料夾做迴圈
6 對每個資料夾中的每個檔案做迴圈
7 若檔案名稱 = 文字方塊所輸入的檔名, 則 :
8 顯示訊息方塊告知檔案已存在於某個資料夾
9 設定變數 a = 1 並跳出迴圈
13 若 a = 1 則設變數 Cancel 為 True , 可做其他判斷之用
 
PS. 利用 FileSystem 並不受檔案隱藏屬性影響. 但若仍想
  得知該檔案是否為隱藏檔, 可使用下列程式碼 :
 
If f1.Attributes And 2 Then MsgBox "該檔案為隱藏檔!"
 
"2" 代表 [隱藏] 屬性的常數值, 原保留字為 "Hidden" .

回覆


類似的主題
主題 主題作者 討論版 回覆 最後發表
/dev/hdb1 contain a filesystem with errors..要怎麼辦 冷月寒羽 -- FreeBSD & Linux 討 論 版 2 2009-03-02 07:16 PM
[VBA]月曆控制項亂碼問題 leonchou -- OFFICE 相 關 軟 體 討 論 版 1 2003-04-27 03:50 PM
[VBA] 比對資料及設定格式 leonchou -- OFFICE 相 關 軟 體 討 論 版 1 2001-09-09 12:02 AM
[VBA] 巨集簡介 leonchou -- OFFICE 相 關 軟 體 討 論 版 0 2001-08-26 05:40 PM
[VBA] 自動巨集與活頁薄事件 leonchou -- OFFICE 相 關 軟 體 討 論 版 1 2001-08-22 08:32 PM






 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。