跳至主要內容
HK Learn AI
生成式 AI 教學

ChatGPT 寫 Excel VBA 入門:貼上、儲存與執行 AI 巨集完整教學

拿到 ChatGPT 產生的 VBA 卻不知道放哪裏?由開啟 VBE、插入標準 Module、檢查程式、另存 .xlsm 到執行巨集與安全除錯,逐步把 AI 程式碼變成可測試、可回復的 Excel 自動化。

HK Learn AI 編輯部標誌

HK Learn AI 編輯部

編輯部

發佈於 2026年7月20日

最後審閱:2026年7月20日

分享這篇文章
Excel 自動化由複製操作走向可審查 VBA 流程的去識別教學插圖

難度

初階

所需時間

35–50 分鐘

你需要準備

ChatGPT · Microsoft Excel 桌面版(Windows 或 Mac) · Visual Basic Editor · VBA · 一份不含真實資料的測試活頁簿

開始之前

  • 已安裝 Microsoft Excel 桌面版;Excel 網頁版不能建立、執行或編輯 VBA 巨集
  • 準備活頁簿副本及虛構測試資料,不要直接在唯一一份正式檔案試跑
  • 知道公司是否批准使用 ChatGPT 及 VBA,並遵守 IT、資料保護和巨集政策
  • 可以辨認工作簿名、工作表名、欄位名、輸入範圍和預期輸出

ChatGPT 已經給你一段 VBA,真正危險和容易卡住的地方才剛開始:應貼在哪個位置?為甚麼巨集清單找不到?存檔後程式碼為甚麼消失?黃色安全警告應否啟用?按下執行後,程式又會改哪一張工作表?這篇教學把「拿到程式碼」之後的每一步完整拆開。

本文示範素材已移除原作者、頻道、帳戶、人物、社交平台與宣傳識別;每張圖只保留完成操作需要的畫面。所有範例都應先在測試副本和虛構資料執行,不要拿唯一一份正式報表做第一次測試。

先記住:AI 生成的 VBA 是未受信任程式碼草稿,不是已驗收軟件。所謂「一鍵自動化」只應發生在規格、審碼、備份、測試、重跑和驗收都通過之後。

先看完整路線:五步把 AI 程式碼變成可測試巨集

  1. 開啟 VBE:由 Developer/開發人員進入 Visual Basic Editor。
  2. 插入標準 Module:在正確 VBAProject 建立一般巨集的容器。
  3. 審查再貼上:確認完整 Sub、變數、讀寫範圍和副作用,再 Compile。
  4. 另存 .xlsm:保留 VBA,關閉再重開測試。
  5. 小樣本執行:用巨集對話框或 VBE 執行,核對前後結果和重跑行為。

如果你的任務只是一條公式、一次性拆欄或定期匯入資料,VBA 未必是最好選擇。公式適合即時計算;Power Query 適合可刷新資料清理;Office Scripts 適合獲支援的雲端和跨平台流程;VBA 最適合桌面 Excel 內重複、規則清楚、需要操作工作簿物件的任務。

步驟一:提問前,先寫一張「程式規格」

「幫我寫一個 Excel 自動化」太含糊。AI 不知道你現在開的是哪個活頁簿、哪張工作表、第一列是否標題、空白值怎樣處理、舊輸出是否可覆蓋,也不知道哪些動作絕對禁止。最低限度要寫出:

  • 工作簿名與工作表的精確名稱
  • 標題列、資料起點、輸入欄和輸出欄。
  • 一個具體輸入樣本及對應輸出。
  • 空白、重複、錯誤值、日期、全形符號和其他例外。
  • 程式可修改與不可修改的範圍。
  • 成功條件、錯誤時應停止還是略過,以及重跑是否會重複。
請為 Microsoft Excel 桌面版撰寫 VBA。

任務:在活頁簿內建立一個可手動執行的標準 Sub 巨集。
工作表:只可操作 ThisWorkbook.Worksheets("測試")。
輸入範圍:A2:C20;第一列是標題。
成功條件:把 C 欄空白列標成「待處理」,其他值不改。
不可修改:其他工作表、檔案、電郵、網絡、登錄檔或外部程式。
安全要求:
1. 使用 Option Explicit,完整宣告變數。
2. 不用 Select、Selection、ActiveWorkbook 或 ActiveSheet。
3. 不用 Shell、Kill、FileSystemObject、HTTP、Outlook 或 Workbook_Open。
4. 加入錯誤處理,錯誤時顯示 Err.Number 與 Err.Description。
5. 先解釋會讀取及寫入哪些範圍,再給完整 Sub…End Sub 程式碼。
6. 最後提供 6 項測試案例,不要假設程式碼一定正確。

涉及公司資料時,只給欄位結構和虛構樣本。OpenAI 的個人帳戶資料使用取決於 Data Controls;Business 工作區的資料處理承諾不同。無論方案如何,公司允許輸入甚麼資料,仍要按內部政策和香港私隱公署的僱員 GenAI 指引處理。

步驟二:先做副本,再審查危險行為

在開啟 VBE 前,先將正式檔案複製成清楚標示的測試版,例如 monthly-report_TEST_20260721.xlsm。測試資料只留 8–20 列,並用虛構姓名、電郵、金額和編號。

在任何 AI 程式碼中搜尋以下詞語;出現不代表一定惡意,但必須逐行知道用途:

搜尋詞或行為可能影響初學者處理
KillRmDirName ... As刪除、移動或改名檔案沒有明確需要便移除;必須另設沙盒資料夾測試
Shell、PowerShell、Command Prompt執行 Excel 以外命令停止,不要盲跑;交 IT 或熟悉人員審查
FileSystemObjectOpen ... For Output讀寫本機或網絡檔案核對每個路徑、覆蓋條件與權限
XMLHTTP、WinHTTP、QueryTables向外部網站傳送或取得資料確認目的地、資料內容、憑證與公司批准
Outlook、.Send建立或發送電郵先只建立草稿;不要在測試時自動寄出
Workbook_OpenAuto_Open開檔即自動執行新手教學先不用;改為手動 Sub
ActiveSheetSelection結果取決於當時焦點改用明確的 ThisWorkbook.Worksheets 與 Range

步驟三:顯示 Developer/開發人員索引標籤

Excel 自訂功能區啟用開發人員索引標籤的重製流程示意
重製流程示意:Windows 路徑通常是 File → Options → Customize Ribbon → 勾選 Developer。Mac 則在 Excel 設定/Preferences 的 Ribbon & Toolbar 內啟用。

Developer 預設可被隱藏。Windows 可到 File → Options → Customize Ribbon,在 Main Tabs 勾選 Developer;Mac 可到 Excel → Preferences/Settings → Ribbon & Toolbar。企業裝置的介面或權限可能受管理員政策控制。

Excel 網頁版限制:Microsoft 明確說明 Excel for the web 不能建立、執行或編輯 VBA。若你只看到瀏覽器介面,請選「Open in Desktop App」,或改評估 Office Scripts。

步驟四:開啟 VBE,找對 VBAProject

Windows 和 Mac 開啟 Visual Basic Editor 的重製流程示意
重製流程示意:可由 Developer → Visual Basic 開啟;Windows 常用 Alt+F11。圖中的 Windows 偏好屬來源意見,不是通用規則;Mac 支援 VBA,但功能與快捷鍵會有差異。

開啟後,左側 Project Explorer 會列出所有已開活頁簿及可能存在的 Personal.xlsb。檔名相似時最容易把程式貼錯專案。先回 Excel 看清楚測試檔名,再在 Project Explorer 選同名的 VBAProject (檔名.xlsm)

步驟五:一般巨集要插入「標準 Module」

VBA 編輯器由 Insert 選單新增標準 Module 的重製流程示意
重製流程示意:在正確 VBAProject 上選 Insert → Module,右邊會出現空白程式碼視窗。介面標籤可能因 Excel 版本而略有不同。

一般手動執行的巨集,結構是 Public Sub 名稱()End Sub,應放標準 Module。以下位置有不同用途:

  • Module:一般可重用、可手動執行的 Sub 和 Function。
  • ThisWorkbook:例如 Workbook_Open、Workbook_BeforeClose 等活頁簿事件。
  • Sheet1/工作表物件:例如 Worksheet_Change 等只屬該工作表的事件。
  • Class Module/UserForm:進階物件與介面,不是新手貼一般巨集的預設位置。

步驟六:貼完整程式碼,先 Compile 再執行

以下預覽專門展示錯誤:畫面內的程式碼刻意漏括號、混入全形符號和缺少 End Sub,不可直接複製執行。正確、可測試的最小巨集在預覽後另行提供。

重製流程示意:辨認三類常見語法錯誤。此畫面是錯誤教材,不是可執行程式;影片無原聲、來源人物、作者、帳戶或宣傳識別。

先用一個完全可回復的測試巨集熟悉流程。建立名稱為「測試」的工作表,再貼入:

Option Explicit

Public Sub MarkTestComplete()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("測試")

    ws.Range("A1").Value = "VBA 測試完成"
    ws.Range("A2").Value = Now

    MsgBox "已只更新「測試」工作表的 A1:A2。", vbInformation
End Sub

Option Explicit 會強制宣告變數,可在編譯時抓出拼錯變數名。程式亦用 ThisWorkbook.Worksheets("測試") 指明目標,不受當時 ActiveSheet 影響。

紅色文字、全形引號、漏掉括號或 End Sub 都可能造成編譯失敗。若錯誤訊息出現,先記下文字和反白位置;不要連續按確定再叫 AI 隨機重寫。

步驟七:另存為 .xlsm,關閉再重開

XLSX、XLSM 與 XLSB 存檔格式差異的重製流程示意
重製流程示意:選 Excel Macro-Enabled Workbook(.xlsm)保留 VBA。圖中的絕對措辭屬簡化;精確說法是 .xlsx 不保留 VBA,而 Excel 在轉換或儲存時通常會警告。
  1. File → Save As。
  2. 檔案格式選 Excel Macro-Enabled Workbook (*.xlsm)
  3. 檔名保留 TEST 或版本日期。
  4. 關閉 Excel,再由 Finder/File Explorer 重開這個 .xlsm。
  5. 返回 VBE 確認 Module 和程式仍在。

.xlsb 亦可包含 VBA,但屬進階選項;初學者先用團隊容易識別的 .xlsm。Personal Macro Workbook 可讓個人巨集在每次開 Excel 時可用,卻不適合把專案專用程式悄悄藏在個人電腦。

步驟八:用 Alt+F8 或 Developer → Macros 執行

三種常見執行方法:

  • Developer → Macros → Run:新手最容易看清巨集名稱。
  • Alt+F8:Windows 快速開啟巨集對話框;Mac 快捷鍵按系統設定可能不同。
  • VBE 內 F5:游標放在 Sub 內執行;F8 則逐行 Step Into,適合除錯。
重製流程示意:Developer → Macros → 選中 DataProcessing_v2 → Run。畫面只證明執行入口,不證明工作表結果正確;影片無原聲、來源人物、作者、帳戶或宣傳識別。

步驟九:黃色安全警告不是要你關掉防護

Microsoft 將「Disable VBA macros with notification」作為可逐次判斷的設定;「Enable all macros」明確標示不建議,因為危險程式碼可直接執行。Trusted Location 會讓資料夾內主動內容繞過多項檢查,所以不要把下載資料夾、電郵附件資料夾或整個共享磁碟設為可信位置。

若檔案來自互聯網、電郵或即時通訊,Office 在 Windows 可能預設封鎖巨集。不要照陌生教學移除保護;應先核對來源和簽署、讓 IT 處理企業政策,或把程式碼移到自己建立並審查過的乾淨活頁簿。

步驟十:驗收結果,而不是只看「沒有報錯」

沒有彈錯誤不等於結果正確。每個巨集至少做以下測試:

  1. 前後對照:記錄預期會改的儲存格,確認其他範圍未改。
  2. 空白值:全空列、部分空白和公式空字串。
  3. 邊界:只有一列、最後一列、超過原測試量的資料。
  4. 重跑:執行第二次不應重複新增或累積錯誤,除非規格要求。
  5. 錯誤路徑:工作表不存在、欄名改動、受保護儲存格或唯讀檔案。
  6. 回復:關閉不儲存是否足夠;若程式已另存、刪檔或寄信,就要另有回復方案。
巨集名稱不符與 ActiveSheet 工作表陷阱的重製除錯示意
重製流程示意:若程式使用 ActiveSheet,執行時焦點不同便可能改錯頁。文章範例改用 ThisWorkbook.Worksheets 的精確名稱;畫面英文按鈕只是概念標籤。

除錯:把完整證據交給 AI,不要只說「不能用」

若出錯,按 Debug/偵錯後先截下反白行,記錄:

  • 錯誤編號與完整訊息。
  • 反白程式碼行。
  • 實際工作表名和欄名(用虛構內容)。
  • 預期結果與實際結果。
  • Windows/Mac、Excel 版本、檔案格式。
  • 問題能否在 8–20 列最小樣本重現。
以下 VBA 在測試副本出錯。請只修正已證實的問題,不要擴大權限或改寫整個流程。

錯誤類型:執行階段錯誤 9
錯誤訊息:下標超出範圍
按「偵錯」後反白行:Set ws = ThisWorkbook.Worksheets("Data")
實際工作表名稱:資料輸入
預期結果:只讀取「資料輸入」,把結果寫入「測試輸出」;來源不可被清空。

請回答:
1. 根因
2. 最小修正
3. 修正後完整程式碼
4. 執行前後驗證清單
5. 是否有任何刪檔、外部連線、寄信或自動開啟行為
現象常見根因下一步
Macro 清單沒有程式貼錯位置、Private Sub、Function、有必要參數或編譯錯誤移到標準 Module,改為無參數 Public Sub,再 Compile
執行階段錯誤 9工作簿或工作表名稱不完全相同從頁籤複製精確名稱,檢查前後空格
錯誤 1004Range、保護、合併儲存格或物件狀態不符記錄反白行,縮小到最小範圍測試
沒有報錯但沒有結果改了另一張 ActiveSheet、條件沒有命中或最後列偵測錯明確指定工作表,在關鍵點印出列數和範圍
重跑出現重複程式只追加,未定義清空或唯一鍵在規格定義冪等、覆蓋範圍或去重鍵
程式碼變成紅色全形引號、漏括號、保留字或語句不完整重新輸入該行半形符號,再 Compile

發布或交給同事前的安全清單

  • 檔案是 .xlsm,並有不含巨集的資料備份。
  • 程式只讀寫規格列出的活頁簿、工作表和範圍。
  • 不存在未批准的刪檔、外連、寄信、Shell、登錄檔或自動開啟行為。
  • 用虛構資料通過正常、空白、錯誤、邊界和重跑測試。
  • 程式碼有版本日期、用途、負責人和回復方法。
  • 使用者不需要把全域巨集安全降至不安全水平。
  • 若涉及個人資料,已按公司政策、PDPO 和內部保留期限處理。

下一個實作:把 Google 表單複選答案拆成逐列名單

熟悉 VBE、Module、.xlsm 和安全執行後,可以跟着 Google 表單複選資料整理教學 做一個完整案例:把同一格內的多個選項拆成「一位填表者 × 一個選項 = 一列」,並用列數和抽查驗算結果。

若你仍在決定 AI 應協助公式、分析、圖表還是 VBA,可先閱讀 ChatGPT Excel 分析與報表指南;涉及工作資料時,再看 ChatGPT 私隱與資料安全指南

資料來源與引用

我們附上第一手及官方來源,方便你逐一核實。

  1. 1.Show the Developer tabMicrosoft Support
  2. 2.Use the Developer tab to create or delete a macro in Excel for MacMicrosoft Support
  3. 3.Run a macro in ExcelMicrosoft Support
  4. 4.Save a macroMicrosoft Support
  5. 5.Change macro security settings in ExcelMicrosoft Support
  6. 6.Enable or disable macros in Microsoft 365 for MacMicrosoft Support
  7. 7.Macros from the internet are blocked by default in OfficeMicrosoft Learn
  8. 8.Work with VBA macros in Excel for the webMicrosoft Support
  9. 9.Option Explicit statementMicrosoft Learn
  10. 10.Data Controls FAQOpenAI Help Center
  11. 11.Checklist on Guidelines for the Use of Generative AI by EmployeesOffice of the Privacy Commissioner for Personal Data, Hong Kong

常見問題

ChatGPT 寫好 VBA 後要貼在哪裏?

一般可手動執行、沒有參數的 Sub 應貼在同一活頁簿 VBAProject 下的標準 Module。Workbook_Open 要放 ThisWorkbook;Worksheet_Change 等事件要放指定工作表物件。不要一律把所有程式貼到 Module。

為甚麼按 Alt+F8 看不到巨集?

先確認程式是標準 Module 內的 Public Sub、沒有必要參數、沒有語法錯誤,而且你開啟的是正確活頁簿。Private Sub、Function、事件程序或帶必要參數的 Sub 通常不會像一般巨集般出現在清單。

VBA 檔案應該存成 XLSM 還是 XLSX?

要保留 VBA,初學者應另存為 Excel Macro-Enabled Workbook(.xlsm)。一般 .xlsx 不保留 VBA。進階用家可研究 .xlsb,但不要只因檔案較小便改變團隊標準。

安全警告出現時是否應按啟用內容?

只有在你知道檔案來源、已審查巨集、確認需要其功能並符合公司政策時才考慮逐次啟用。不要把全域設定改成 Enable all macros,也不要把不明下載檔放入 Trusted Location。

Excel 網頁版可以執行 VBA 嗎?

不可以。Microsoft 說明 Excel for the web 不能建立、執行或編輯 VBA;要在桌面 Excel 開啟。需要雲端或跨平台流程時,可評估 Office Scripts、Power Automate 或 Power Query。

ChatGPT 寫的 VBA 可以直接在公司檔案執行嗎?

不應直接執行。先使用假資料和副本,檢查讀寫範圍、刪除、寄信、外部連線、檔案系統、自動開啟事件與錯誤處理,再逐步測試及讓資料負責人驗收。

執行錯誤時應把甚麼資料交給 ChatGPT?

提供錯誤編號、錯誤訊息、偵錯後反白的一行、虛構的工作表和欄位結構、預期與實際結果即可。不要貼整份含客戶、員工、財務或登入資料的活頁簿。

本文遵循我們的 編輯準則.

HK Learn AI 編輯部標誌

關於作者

HK Learn AI 編輯部

HK Learn AI 編輯部負責研究、查證同編寫每一篇內容,並引用官方及第一手來源。