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