[VBA] File System 及副程序應用 - PCZONE 討論區

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


PCZONE 討論區



通知

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

Take it easy~
[VBA] File System 及副程序應用
這是純粹討論 Excel VBA 有關 file system (磁碟檔案系統) 及
副程序應用的部份,當然對於巨集內容,如果你有更好的寫法或意見,
也歡迎提出來和大家分享、討論喔~
 
問題:如何列出本機使用中的 Excel 活頁薄?包括本機開啟的
   以及其他PC透過區域網路及資源分享而開啟的活頁簿。
 
方法:以下的巨集會把本機和指定目錄下使用中的xls檔列出。
 
Sub CheckFile()
1 Application.ScreenUpdating = False
2 Range("A1") = "本機已開啟檔案"
3 For Each book In Workbooks
4 GoSub 16: Cells(r, 1) = book.FullName
5 Next
6 mypath = "C:\": GoSub 16
7 myfile = Dir(mypath & "*.xls")
8 Cells(r, 1) = "他人使用中檔案"
9 Do While myfile <> "" ' 執行迴圈
10 GoSub 16
11 Workbooks.Open mypath & myfile
12 If ActiveWorkbook.ReadOnly Then Cells(r, 1) = mypath & myfile
13 Workbooks(myfile).Close
14 myfile = Dir ' 尋找下一個檔案
15 Loop: Exit Sub
16 r = Application.WorksheetFunction.CountA(Columns(1)) + 1: Return
End Sub
 
[說明]
1 將 Excel 的"螢幕更新"關閉,以免因程式執行過程顯示於畫面上。
2 A1 儲存格填入"本機已開啟檔案"字串做為標題。
3 對本機已開啟之活頁簿做迴圈,執行 For...Next 之間的動作。
4 執行 16 行的副程序,得出第一欄最下一個空格的列號 r;
  於第 r 列第 1 欄儲存格填入該活頁簿之完整名稱 (包含路徑)。
6 設定變數 mypath 為指定的目錄;再執行第 16 行副程序。
7 設定變數 myfile 為該目錄下的所有 Excel 活頁簿檔案。
8 於第 r 列第 1 欄儲存格填入"他人使用中檔案"字串做為標題。
9 對 myfile 對應的所有檔案做迴圈,執行 Do...Loop 之間的動作。
10 執行第 16 行副程序,得出第一欄最下一個空格的列號 r。
11 開啟 myfile 第一個活頁簿檔案。
12 若此檔案是唯讀,表示為使用中,將完整檔名填入
  第 r 列第 1 欄儲存格。
13 關閉此檔案。
14 尋找 myfile 下一個檔案。
15 結束 Do...Loop 迴圈。跳離巨集以免繼續執行 16 行副程式。
16 設定變數 r 為第一欄最下一個空格的列號 (row);回到呼叫的程式碼。
  • 為說明之便而在程式碼前加上行號,一般是不需要的。
  • 指定資料夾分享模式應設定為「完整」,否則偵測不到。


回覆


類似的主題
主題 主題作者 討論版 回覆 最後發表
Windows「加密檔案系統」Encrypting File System (EFS) FYI -- Windows 討 論 版 5 2007-06-15 09:04 PM
【求助】每次開機都CHKDSK FILE SYSTEM D巢 tree -- HELP ME 電 腦 軟 硬 體 急 救 版 3 2004-10-27 12:18 AM
[整理] Windows 2000 各 File System 的最大值 Schnaufer -- Windows 討 論 版 8 2003-02-07 04:53 PM
不知有沒有人問過了!! about win2k file system??? epijjyi -- Windows 討 論 版 4 2001-11-11 10:45 PM






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

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