【VBA 自動化教學01】一鍵開啟資料夾內所有 Excel 檔案

更新 發佈閱讀 7 分鐘

在日常工作中,若需開啟多個 Excel 檔案進行比對、整合或檢查,手動操作既耗時又容易遺漏。透過 VBA,我們可以建立一個「一鍵開啟」功能,讓使用者選擇資料夾後,自動載入其中所有 Excel 檔案,大幅提升效率。

本文將完整教學如何撰寫這段 VBA 程式碼,並逐段解說其邏輯與應用場景,適合初學者與進階使用者參考。

功能概述

這段 VBA 程式碼可實現以下功能:

  • 使用者點選按鈕後,開啟資料夾選擇對話框
  • 自動讀取該資料夾內所有 .xls.xlsx.xlsm 檔案
  • 依序開啟每個檔案並顯示提示訊息

VBA 程式碼範例

Private Sub CommandButton1_Click()
' 宣告變數
Dim FolderPath As String
Dim File As String
Dim ExcelApp As Object
Dim Workbook As Workbook

' 使用檔案選擇對話框選擇資料夾
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "選擇資料夾"
.AllowMultiSelect = False
If .Show = -1 Then
FolderPath = .SelectedItems(1) & "\"
Else
Exit Sub ' 使用者取消選擇
End If
End With

' 獲取 Excel 應用程式對象
Set ExcelApp = Application
ExcelApp.Visible = True

' 打開資料夾內的所有 Excel 文件
File = Dir(FolderPath & "*.xls*")
Do While File <> ""
Set Workbook = ExcelApp.Workbooks.Open(FolderPath & File)
File = Dir ' 取得下一個檔案
Loop

MsgBox "所有文件已打開", vbInformation
End Sub

程式碼詳細解說(初學者導向)

這段程式碼的目的是讓使用者點選按鈕後,自動開啟指定資料夾內的所有 Excel 檔案。以下是逐段說明:

首先,我們宣告了幾個變數:

  • FolderPath 是用來儲存使用者選擇的資料夾路徑。
  • File 是用來儲存目前正在處理的檔案名稱。
  • ExcelApp 是指向 Excel 應用程式的物件,這裡直接使用目前的 Excel 實例。
  • Workbook 是用來儲存每次開啟的 Excel 檔案物件。

接著,我們使用 Application.FileDialog(msoFileDialogFolderPicker) 開啟一個資料夾選擇對話框。這個對話框會讓使用者選擇一個資料夾:

  • .Title = "選擇資料夾" 設定對話框的標題。
  • .AllowMultiSelect = False 表示不允許選擇多個資料夾。
  • If .Show = -1 Then 判斷使用者是否按下「確定」,若是,就將選擇的資料夾路徑存入 FolderPath,並加上結尾的 \
  • 若使用者按下「取消」,則使用 Exit Sub 結束整段程式碼,不繼續執行。

然後,我們將 ExcelApp 設定為目前的 Excel 應用程式,並確保它是可見的(ExcelApp.Visible = True),這樣使用者可以看到檔案被打開。

接下來是讀取並開啟資料夾內的所有 Excel 檔案:

  • File = Dir(FolderPath & "*.xls*") 使用 Dir 函數取得第一個符合條件的檔案名稱,這裡的 *.xls* 會抓到 .xls.xlsx.xlsm 等副檔名。
  • Do While File <> "" 表示只要還有檔案,就進入迴圈。
  • Set Workbook = ExcelApp.Workbooks.Open(FolderPath & File) 這行會開啟該檔案,並將它存入 Workbook 變數中。
  • File = Dir 這行會取得下一個檔案名稱,若沒有更多檔案,File 會變成空字串,迴圈就會結束。

最後,當所有檔案都開啟完畢後,使用 MsgBox "所有文件已打開", vbInformation 顯示提示訊息,告知使用者操作已完成。

這段程式碼的邏輯簡單清楚,非常適合初學者練習「檔案操作」、「對話框控制」與「迴圈處理」等 VBA 基礎技巧。

操作步驟與使用方式

  1. 在 Excel 的工作表中插入一個 ActiveX 控制項按鈕(CommandButton)
  2. 將上述程式碼貼入該按鈕的 Click 事件中
  3. 儲存並執行,點選按鈕後選擇資料夾,即可自動開啟所有 Excel 檔案

應用場景與延伸建議

  • 批次開啟報表進行比對或整合
  • 教學或訓練時快速載入多個範例檔
  • 財務或會計部門定期處理多筆資料

進階延伸功能建議:

  • 加入錯誤處理(避免開啟損毀或受保護檔案時中斷)
  • 加入進度提示(顯示目前開啟的檔案名稱)
  • 自動合併資料至主工作簿
  • 支援遞迴開啟子資料夾內檔案(搭配 FileSystemObject)

常見問題 FAQ

Q1:這段程式碼可以開啟子資料夾內的檔案嗎?

目前僅支援選定資料夾的第一層檔案,若需遞迴處理子資料夾,可使用 FileSystemObject 進行擴充。

Q2:是否可以只開啟特定檔名的 Excel?

可以修改 Dir(FolderPath & "*.xls*")Dir(FolderPath & "*報表*.xlsx") 來篩選特定關鍵字。

Q3:如何避免重複開啟已開啟的檔案?

可加入判斷邏輯,例如使用 Workbooks.Count 或比對檔名是否已存在於 Workbooks 集合中。

結語與延伸閱讀

這段 VBA 程式碼提供了高效率的「一鍵開啟 Excel 檔案」功能,適合用於日常資料處理與教學場景。後續你可以進一步加入資料合併、格式轉換或自動分析模組,打造完整的 Excel 自動化工具。

下一篇將介紹如何「一鍵合併多個 Excel 檔案資料」,敬請期待【VBA 自動化教學】第 2 篇。


留言
avatar-img
留言分享你的想法!
avatar-img
蝦仁藥師_臨床輕鬆學的沙龍
42會員
314內容數
哈囉~!這裡主要在分享醫療知識,還有記錄下學習程式語言的各種筆記,偶爾穿插一些個人的淺見與有趣分享,希望大家都可以在這邊得到有用的資訊~!
2025/10/13
在 Excel 中處理欄位拆解、資料解析或格式標準化時,常需要擷取某個特定字元或標記「之前」的文字內容。TEXTBEFORE 函數能依指定分隔符,擷取其前方的文字,適合用於報表設計、資料清理、欄位標準化與自動化解析等場景。它是 Excel 365 中的動態陣列函數,與 TEXTAFTER 搭配使用。
Thumbnail
2025/10/13
在 Excel 中處理欄位拆解、資料解析或格式標準化時,常需要擷取某個特定字元或標記「之前」的文字內容。TEXTBEFORE 函數能依指定分隔符,擷取其前方的文字,適合用於報表設計、資料清理、欄位標準化與自動化解析等場景。它是 Excel 365 中的動態陣列函數,與 TEXTAFTER 搭配使用。
Thumbnail
2025/10/13
在 Excel 中處理欄位拆解、資料解析或格式標準化時,常需要擷取某個特定字元或標記之後的文字內容。TEXTAFTER 函數能依指定分隔符,擷取其「之後」的文字,適合用於報表設計、資料清理、欄位標準化與自動化解析等場景。它是 Excel 365 中的動態陣列函數,與 TEXTBEFORE 搭配使用。
Thumbnail
2025/10/13
在 Excel 中處理欄位拆解、資料解析或格式標準化時,常需要擷取某個特定字元或標記之後的文字內容。TEXTAFTER 函數能依指定分隔符,擷取其「之後」的文字,適合用於報表設計、資料清理、欄位標準化與自動化解析等場景。它是 Excel 365 中的動態陣列函數,與 TEXTBEFORE 搭配使用。
Thumbnail
2025/10/13
在 Excel 中處理匯入資料、欄位標準化或格式修正時,常需要將特定字元或文字內容替換為其他字串。SUBSTITUTE 函數能依「內容」搜尋並替換文字,適合用於資料清理、格式統一、報表設計與欄位修復等場景。與 REPLACE 函數不同,SUBSTITUTE 是依「文字內容」操作,而非依「位置」。
Thumbnail
2025/10/13
在 Excel 中處理匯入資料、欄位標準化或格式修正時,常需要將特定字元或文字內容替換為其他字串。SUBSTITUTE 函數能依「內容」搜尋並替換文字,適合用於資料清理、格式統一、報表設計與欄位修復等場景。與 REPLACE 函數不同,SUBSTITUTE 是依「文字內容」操作,而非依「位置」。
Thumbnail
看更多
你可能也想看
Thumbnail
只要會用鍵盤的人,人人都會做EXCEL表格。但是,如果你仔細研究,你或許會發現,工作是否有效率其實可以從一張EXCEL表裡看出來。這篇文章分享幾幾簡單的檢查方法與製作技巧。
Thumbnail
只要會用鍵盤的人,人人都會做EXCEL表格。但是,如果你仔細研究,你或許會發現,工作是否有效率其實可以從一張EXCEL表裡看出來。這篇文章分享幾幾簡單的檢查方法與製作技巧。
Thumbnail
這篇文章介紹如何使用VBA程式碼將【包含備註】的Excel檔案轉換為PDF檔。在研究這個問題時,作者花了3個小時多的時間,但後來發現了一個更簡單的方法,這讓作者感到震驚和懷疑人生。最後,作者強調使用他人的智慧來提高自己的能力。文章提供了相關參考文獻和圖片。
Thumbnail
這篇文章介紹如何使用VBA程式碼將【包含備註】的Excel檔案轉換為PDF檔。在研究這個問題時,作者花了3個小時多的時間,但後來發現了一個更簡單的方法,這讓作者感到震驚和懷疑人生。最後,作者強調使用他人的智慧來提高自己的能力。文章提供了相關參考文獻和圖片。
Thumbnail
本文介紹了將獨立的Excel檔案轉換為PDF檔的方法,並提供了相關連結和資源,包括Excel教學、VBA自動轉存檔案等。文章中還包含了南宋詞人辛棄疾詞和張忠謀的引言,讓讀者在解決問題的同時得到一些靈感和鼓勵。
Thumbnail
本文介紹了將獨立的Excel檔案轉換為PDF檔的方法,並提供了相關連結和資源,包括Excel教學、VBA自動轉存檔案等。文章中還包含了南宋詞人辛棄疾詞和張忠謀的引言,讓讀者在解決問題的同時得到一些靈感和鼓勵。
Thumbnail
Excel是一個強大的電子試算表軟體,不僅適用於數據分析和報表製作,還能通過VBA(Visual Basic for Applications)進行自動化和擴展功能。要使用這些進階功能,首先需要啟用開發人員選項。以下將詳細介紹在Windows和Mac版本的Excel中如何啟用這個選項。 在Wi
Thumbnail
Excel是一個強大的電子試算表軟體,不僅適用於數據分析和報表製作,還能通過VBA(Visual Basic for Applications)進行自動化和擴展功能。要使用這些進階功能,首先需要啟用開發人員選項。以下將詳細介紹在Windows和Mac版本的Excel中如何啟用這個選項。 在Wi
Thumbnail
Excel 是許多人日常工作中不可或缺的工具之一,它提供了許多便利的功能來幫助我們處理數據和表格。其中,自動填入編號是一個常見的需求,例如填入連續的序列編號或特定的數字序列。在本文中,我們將介紹一個快速且方便的方法來實現這一目標,即使用 ALT 快捷鍵組合。
Thumbnail
Excel 是許多人日常工作中不可或缺的工具之一,它提供了許多便利的功能來幫助我們處理數據和表格。其中,自動填入編號是一個常見的需求,例如填入連續的序列編號或特定的數字序列。在本文中,我們將介紹一個快速且方便的方法來實現這一目標,即使用 ALT 快捷鍵組合。
Thumbnail
在工作中,我們經常需要處理各種報表,而其中一項任務就是每天手動更新報表。這可能是一個繁瑣且容易被遺忘的工作,但有幸的是,我們可以利用VBA(Visual Basic for Applications)和Windows工作排程器來自動化這個過程,讓我們在不知不覺中完成這項任務。
Thumbnail
在工作中,我們經常需要處理各種報表,而其中一項任務就是每天手動更新報表。這可能是一個繁瑣且容易被遺忘的工作,但有幸的是,我們可以利用VBA(Visual Basic for Applications)和Windows工作排程器來自動化這個過程,讓我們在不知不覺中完成這項任務。
Thumbnail
為什麼要比較Excel 工作表(Worksheet) 工作中,常常會儲存多個同一目的,但不同時間的工作。或者,有時要檢查兩個人做的EXCEL工作表,是否有所不同。當然,若工作表很小,肉眼看是最快的,但是,如果是庫存的大量資料如1萬筆以上的財務資訊等,這時靠肉眼看,速度實在是太慢了,而且也容易出錯。
Thumbnail
為什麼要比較Excel 工作表(Worksheet) 工作中,常常會儲存多個同一目的,但不同時間的工作。或者,有時要檢查兩個人做的EXCEL工作表,是否有所不同。當然,若工作表很小,肉眼看是最快的,但是,如果是庫存的大量資料如1萬筆以上的財務資訊等,這時靠肉眼看,速度實在是太慢了,而且也容易出錯。
Thumbnail
在職場上,我們經常需要使用 Excel 表格來處理資料,而自動格式設定可以幫助我們快速將資料整理成一致的格式,讓資料看起來更清晰、更有效率。用 Excel 的快捷鍵自動出現自動格式設定技巧,可以讓我們在更短的時間內套用自動格式,讓工作更輕鬆。
Thumbnail
在職場上,我們經常需要使用 Excel 表格來處理資料,而自動格式設定可以幫助我們快速將資料整理成一致的格式,讓資料看起來更清晰、更有效率。用 Excel 的快捷鍵自動出現自動格式設定技巧,可以讓我們在更短的時間內套用自動格式,讓工作更輕鬆。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News