Skip to main content

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

Author: Xiaoyang Last Modified: 2025-08-06

在進行目錄或檔案管理任務時,您可能需要快速獲取特定目錄內所有資料夾和子資料夾的完整清單,並將該資訊直接檢視在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 code to select folder name

4. 選擇所需的目錄並點擊 確定。宏將處理該目錄並生成一個新工作簿,列出所有資料夾和子資料夾及其完整路徑、直接父目錄、名稱、建立日期和最後修改日期,如下所示:

all folder names are listed in Excel

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

  • 如果您的目錄結構非常龐大,宏可能需要一些時間來處理所有資料夾。執行期間請耐心等待,並避免中斷該過程。
  • VBA方法要求您的宏設定已啟用;否則,程式碼將無法正確運行。如果您遇到安全警告,請檢查Excel選項中的信任中心設定。
  • 如果您不小心選擇了錯誤的資料夾,只需重新執行宏並選擇正確的目錄即可。
  • 此方法僅列出資料夾和子資料夾資訊;如果您還需要列出檔案,請參閱下面的相關文章以獲取更多選項。
  • 如果多個用戶共享該工作簿,提醒他們在自己的電腦上必須啟用宏才能使用此動態列表功能。
  • 如果生成的工作簿是空白或不完整的,請確保所選目錄不是空的並且您具有足夠的讀取權限。對於特別深或複雜的資料夾樹,請審查您的系統資源限制,並考慮如有必要,分批或按子目錄處理。

這個VBA解決方案靈活,不需要額外的外掛或外部軟體,並自動創建一個輸出工作簿以便於使用。然而,它最適合熟悉基本宏操作的用戶,並且可能需要針對特定自訂進行額外調整。


相關文章:

如何在Excel中將目錄中的檔案列表到工作表?

最佳 Office 辦公效率工具

🤖 Kutools AI Aide:徹底革新數據分析,基於智能執行|生成程式碼|創建自訂公式|分析數據並生成圖表|調用 Kutools Functions
熱門功能查找、選取項目的背景色或標記重複值 | 刪除空行 | 合併列或單元格且不丟失資料 | 四捨五入...
高級 LOOKUP多條件查找|多值查找|多表查找|模糊查找...
高級下拉列表快速創建下拉列表 | 關聯下拉列表 | 多選下拉列表 ...
列管理器添加指定數量的列 | 移動列 | 切換隱藏列的可見狀態 | 區域與列比較 ...
精選功能網格聚焦 | 設計檢視 | 增強編輯欄 | 工作簿及工作表管理器 | 資源庫 (自動文本) | 日期提取器 | 合併資料 | 加密/解密儲存格 | 按清單發送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體/傾斜/刪除線 ...)...
前15 大工具集12 款文本工具添加文本刪除特定字符,...)|50+ 種圖表 類型甘特圖,...)|40+ 實用 公式基於生日計算年齡,...)|19 款插入工具插入QR码按路徑插入圖片,...)|12 款轉換工具金額轉大寫匯率轉換,...)|7 款合併和分割工具高級合併行分割儲存格,...)| ...以及更多
使用 Kutools 支援你的語言——支援英語、西班牙語、德語、法語、中文及40 多種語言!

利用 Kutools for Excel 大幅提升你的 Excel 技能,感受前所未有的高效體驗。 Kutools for Excel 提供超過300 項高級功能,助你提升效率並保存時間。 點此查看你最需要的功能...


Office Tab 為 Office 帶來標籤式介面,讓你的工作更加輕鬆

  • 啟用 Word、Excel、PowerPoint 的標籤式編輯和閱讀功能
  • 在同一個視窗的標籤中打開和創建多個文件,而不是在新窗口中分開開啟。
  • 可提升你50% 的工作效率,每天為你大量減少滑鼠點擊次數!