KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Excel 中列出所有資料夾及其子資料夾?

作者Xiaoyang修改日期

處理目錄或檔案管理任務時,您可能需要快速取得特定資料夾及其所有子資料夾的完整清單,並直接在 Excel 中檢視這些資訊。可惜的是,Excel 並未內建可自動從指定路徑擷取所有資料夾與子資料夾名稱的函數或簡易精靈。本文提供實用的 VBA 程式碼,讓您能將任一選定目錄下的所有資料夾與子資料夾直接列於工作表中,有效降低人為錯誤風險、省去繁瑣手動操作,助您迅速掌握並高效管理資料結構。

使用 VBA 程式碼列出所有資料夾與子資料夾


使用 VBA 程式碼列出所有資料夾與子資料夾

若您希望將指定目錄中的所有資料夾與子資料夾名稱擷取並顯示於 Excel 中,使用 VBA(Visual Basic for Applications)正是高效又靈活的解決方案。此方法不僅能精準取得資料夾名稱,還可一併獲取其他實用資訊,例如完整路徑、建立日期及最後修改時間,特別適合熟悉 Excel 開發人員功能,且需處理動態或經常變更之檔案系統的使用者。

1. 按下 ALT + F11,即可開啟「Microsoft Visual Basic for Applications」編輯器!此工具讓您輕鬆在活頁簿中新增與編輯巨集,提升工作效率。

2. 在 VBA 編輯器中,點選插入 > 模組,即可建立一個新的模組視窗。請將下列程式碼複製並貼上至該模組中:

VBA 程式碼:列出所有資料夾與子資料夾名稱

Sub FolderNames()
'Updateby Extendoffice
Application.ScreenUpdating = False
Dim xPath As String
Dim xWs As Worksheet
Dim fso As Object, j As Long, folder1 As Object
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Choose the folder"
    .Show
End With
On Error Resume Next
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Application.Workbooks.Add
Set xWs = Application.ActiveSheet
xWs.Cells(1, 1).Value = xPath
xWs.Cells(2, 1).Resize(1, 5).Value = Array("Path", "Dir", "Name", "Date Created", "Date Last Modified")
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder1 = fso.getFolder(xPath)
getSubFolder folder1
xWs.Cells(2, 1).Resize(1, 5).Interior.Color = 65535
xWs.Cells(2, 1).Resize(1, 5).EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
Sub getSubFolder(ByRef prntfld As Object)
Dim SubFolder As Object
Dim subfld As Object
Dim xRow As Long
For Each SubFolder In prntfld.SubFolders
    xRow = Range("A1").End(xlDown).Row + 1
    Cells(xRow, 1).Resize(1, 5).Value = Array(SubFolder.Path, Left(SubFolder.Path, InStrRev(SubFolder.Path, "\")), SubFolder.Name, SubFolder.DateCreated, SubFolder.DateLastModified)
Next SubFolder
For Each subfld In prntfld.SubFolders
    getSubFolder subfld
Next subfld
End Sub

3. 在插入程式碼後,按下 F5 或點選 VBA 編輯器中的執行按鈕以執行巨集。「選擇資料夾」對話方塊將隨即出現,提示您選取欲掃描資料夾與子資料夾的目標目錄。

用於選取資料夾名稱的 VBA 程式碼

4. 選取所需目錄後,點選確定,巨集將自動處理該目錄,並產生一個全新的工作簿清單,完整列出所有資料夾與子資料夾的名稱、完整路徑、直接上層目錄、建立日期及最後修改日期,如下所示:

所有資料夾名稱均已列在 Excel 中

使用此程式碼的一些實用提示與注意事項:

  • 若您的目錄結構極為龐大,巨集處理所有資料夾可能需要一些時間。執行期間,敬請耐心等候,並避免中斷處理程序。
  • VBA 方法需要啟用巨集設定,否則程式碼將無法正常執行。若您遇到安全性警告,請檢查 Excel 選項中的信任中心設定。
  • 若您不慎選錯資料夾,只需重新執行巨集,並選擇正確的目錄即可。
  • 此方法僅列出資料夾及其子資料夾的資訊;若您還需要一併列出檔案,請參閱下方相關文章以取得更多選項。
  • 若有多位使用者共用此活頁簿,請提醒他們務必在各自的電腦上啟用巨集,才能順利使用此動態列表功能。
  • 若產生的活頁簿為空白或內容不完整,請確認所選目錄非空,且您擁有足夠的讀取權限。針對層級特別深或結構複雜的資料夾樹狀結構,請檢查系統的資源限制,必要時可考慮分批處理,或針對各子目錄分別進行處理。

此 VBA 解決方案彈性十足,無需額外增益集或外部軟體,並能自動為您建立輸出活頁簿。不過,此方法最適合熟悉基本巨集操作的使用者;若需特定自訂功能,可能仍須進一步調整。


相關文章:

如何在 Excel 中將資料夾內的檔案清單匯入工作表?

最佳 Office 生產力工具

🤖KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行     產生程式碼  建立自訂公式    分析資料並產生圖表  呼叫增強函數……
熱門功能尋找、醒目提示或標記重複值     刪除空白行     合併列或儲存格而不遺失資料     不使用公式的四捨五入……
高級 LOOKUP多重條件 VLookup    多重數值 VLookup     跨多個工作表 VLookup      模糊查找……
高級下拉列表快速建立下拉式清單     相依式下拉式清單     多選下拉式清單……
欄位管理員新增指定數量的欄位移動欄位切換隱藏欄位的可見狀態比較範圍與欄位……
精選功能網格聚焦     設計視圖   增強編輯欄    工作簿與工作表管理員     資源庫(自動文字)  日期提取     合併工作表    加密/解密儲存格    依清單傳送電子郵件     超級篩選      特殊篩選(篩選粗體儲存格/斜體/刪除線……) ......
頂尖 15 工具組12 文字工具添加文本刪除特定字符,……)   50+ 圖表 類型甘特圖,……)   40+ 實用公式基於生日計算年齡,……)   19 插入工具插入二維碼從路徑插入圖片,……)   12 轉換工具金額轉大寫匯率轉換,……)   7 合併和拆分工具高級合併行分割儲存格,……)……以及更多
在您的慣用語言中使用 Kutools—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……


Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!

  • 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
  • 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
  • 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!

所有 Kutools 增益集,一個安裝程式

Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用