Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

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

Author Xiaoyang Last modified

在進行目錄或檔案管理任務時,您可能需要快速獲取特定目錄內所有資料夾和子資料夾的完整清單,並將該資訊直接檢視在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 助手:以智能執行為基礎,革新數據分析 生成程式碼 創建自訂公式 分析數據並生成圖表 調用 Kutools 增強函數
熱門功能查找、選取項目的背景色或標記重複值刪除空行合併列或單元格且不遺失數據四捨五入(免公式)...
高級 LOOKUP多條件 VLookup多值 VLookup多表查找模糊查找...
高級下拉列表快速創建下拉列表 依賴型下拉列表 多選下拉列表...
列管理器添加指定數量的列移動列切換隱藏列的顯示狀態比較區域及列...
精選功能網格聚焦 設計檢視 增強編輯欄 工作簿及工作表管理器 資源庫(快捷文本) 日期提取器 合併資料 加密/解密儲存格 按列表發送電子郵件 超級篩選 特殊篩選(篩選粗體/傾斜/刪除線...)...
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%,每日可幫您減少數百次鼠標點擊!

所有 Kutools 外掛,一次安裝

Kutools for Office 套裝整合了 Excel、Word、Outlook 和 PowerPoint 的外掛,外加 Office Tab Pro,非常適合需要跨 Office 應用程式協同作業的團隊。

Excel Word Outlook Tabs PowerPoint
  • 全合一套裝 — Excel、Word、Outlook及 PowerPoint 外掛 + Office Tab Pro
  • 一鍵安裝,一份授權 — 幾分鐘完成設置(支援 MSI)
  • 協同運作更順暢 — Office 應用間無縫提升生產力
  • 30 天全功能試用 — 無需註冊、無需信用卡
  • 最超值 — 一次購買,節省單獨外掛費用