
難度
初階
所需時間
35–50 分鐘
你需要準備
ChatGPT · Microsoft Excel 桌面版(Windows 或 Mac) · Visual Basic Editor · VBA · 一份不含真實資料的測試活頁簿
開始之前
- 已安裝 Microsoft Excel 桌面版;Excel 網頁版不能建立、執行或編輯 VBA 巨集
- 準備活頁簿副本及虛構測試資料,不要直接在唯一一份正式檔案試跑
- 知道公司是否批准使用 ChatGPT 及 VBA,並遵守 IT、資料保護和巨集政策
- 可以辨認工作簿名、工作表名、欄位名、輸入範圍和預期輸出
ChatGPT 已經給你一段 VBA,真正危險和容易卡住的地方才剛開始:應貼在哪個位置?為甚麼巨集清單找不到?存檔後程式碼為甚麼消失?黃色安全警告應否啟用?按下執行後,程式又會改哪一張工作表?這篇教學把「拿到程式碼」之後的每一步完整拆開。
本文示範素材已移除原作者、頻道、帳戶、人物、社交平台與宣傳識別;每張圖只保留完成操作需要的畫面。所有範例都應先在測試副本和虛構資料執行,不要拿唯一一份正式報表做第一次測試。
先記住:AI 生成的 VBA 是未受信任程式碼草稿,不是已驗收軟件。所謂「一鍵自動化」只應發生在規格、審碼、備份、測試、重跑和驗收都通過之後。
先看完整路線:五步把 AI 程式碼變成可測試巨集
- 開啟 VBE:由 Developer/開發人員進入 Visual Basic Editor。
- 插入標準 Module:在正確 VBAProject 建立一般巨集的容器。
- 審查再貼上:確認完整 Sub、變數、讀寫範圍和副作用,再 Compile。
- 另存 .xlsm:保留 VBA,關閉再重開測試。
- 小樣本執行:用巨集對話框或 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 程式碼中搜尋以下詞語;出現不代表一定惡意,但必須逐行知道用途:
| 搜尋詞或行為 | 可能影響 | 初學者處理 |
|---|---|---|
Kill、RmDir、Name ... As | 刪除、移動或改名檔案 | 沒有明確需要便移除;必須另設沙盒資料夾測試 |
Shell、PowerShell、Command Prompt | 執行 Excel 以外命令 | 停止,不要盲跑;交 IT 或熟悉人員審查 |
FileSystemObject、Open ... For Output | 讀寫本機或網絡檔案 | 核對每個路徑、覆蓋條件與權限 |
| XMLHTTP、WinHTTP、QueryTables | 向外部網站傳送或取得資料 | 確認目的地、資料內容、憑證與公司批准 |
Outlook、.Send | 建立或發送電郵 | 先只建立草稿;不要在測試時自動寄出 |
Workbook_Open、Auto_Open | 開檔即自動執行 | 新手教學先不用;改為手動 Sub |
ActiveSheet、Selection | 結果取決於當時焦點 | 改用明確的 ThisWorkbook.Worksheets 與 Range |
步驟三:顯示 Developer/開發人員索引標籤

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

開啟後,左側 Project Explorer 會列出所有已開活頁簿及可能存在的 Personal.xlsb。檔名相似時最容易把程式貼錯專案。先回 Excel 看清楚測試檔名,再在 Project Explorer 選同名的 VBAProject (檔名.xlsm)。
步驟五:一般巨集要插入「標準 Module」

一般手動執行的巨集,結構是 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,關閉再重開

- File → Save As。
- 檔案格式選 Excel Macro-Enabled Workbook (*.xlsm)。
- 檔名保留 TEST 或版本日期。
- 關閉 Excel,再由 Finder/File Explorer 重開這個 .xlsm。
- 返回 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,適合除錯。
步驟九:黃色安全警告不是要你關掉防護
Microsoft 將「Disable VBA macros with notification」作為可逐次判斷的設定;「Enable all macros」明確標示不建議,因為危險程式碼可直接執行。Trusted Location 會讓資料夾內主動內容繞過多項檢查,所以不要把下載資料夾、電郵附件資料夾或整個共享磁碟設為可信位置。
若檔案來自互聯網、電郵或即時通訊,Office 在 Windows 可能預設封鎖巨集。不要照陌生教學移除保護;應先核對來源和簽署、讓 IT 處理企業政策,或把程式碼移到自己建立並審查過的乾淨活頁簿。
步驟十:驗收結果,而不是只看「沒有報錯」
沒有彈錯誤不等於結果正確。每個巨集至少做以下測試:
- 前後對照:記錄預期會改的儲存格,確認其他範圍未改。
- 空白值:全空列、部分空白和公式空字串。
- 邊界:只有一列、最後一列、超過原測試量的資料。
- 重跑:執行第二次不應重複新增或累積錯誤,除非規格要求。
- 錯誤路徑:工作表不存在、欄名改動、受保護儲存格或唯讀檔案。
- 回復:關閉不儲存是否足夠;若程式已另存、刪檔或寄信,就要另有回復方案。

除錯:把完整證據交給 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 | 工作簿或工作表名稱不完全相同 | 從頁籤複製精確名稱,檢查前後空格 |
| 錯誤 1004 | Range、保護、合併儲存格或物件狀態不符 | 記錄反白行,縮小到最小範圍測試 |
| 沒有報錯但沒有結果 | 改了另一張 ActiveSheet、條件沒有命中或最後列偵測錯 | 明確指定工作表,在關鍵點印出列數和範圍 |
| 重跑出現重複 | 程式只追加,未定義清空或唯一鍵 | 在規格定義冪等、覆蓋範圍或去重鍵 |
| 程式碼變成紅色 | 全形引號、漏括號、保留字或語句不完整 | 重新輸入該行半形符號,再 Compile |
發布或交給同事前的安全清單
- 檔案是 .xlsm,並有不含巨集的資料備份。
- 程式只讀寫規格列出的活頁簿、工作表和範圍。
- 不存在未批准的刪檔、外連、寄信、Shell、登錄檔或自動開啟行為。
- 用虛構資料通過正常、空白、錯誤、邊界和重跑測試。
- 程式碼有版本日期、用途、負責人和回復方法。
- 使用者不需要把全域巨集安全降至不安全水平。
- 若涉及個人資料,已按公司政策、PDPO 和內部保留期限處理。
下一個實作:把 Google 表單複選答案拆成逐列名單
熟悉 VBE、Module、.xlsm 和安全執行後,可以跟着 Google 表單複選資料整理教學 做一個完整案例:把同一格內的多個選項拆成「一位填表者 × 一個選項 = 一列」,並用列數和抽查驗算結果。
若你仍在決定 AI 應協助公式、分析、圖表還是 VBA,可先閱讀 ChatGPT Excel 分析與報表指南;涉及工作資料時,再看 ChatGPT 私隱與資料安全指南。
資料來源與引用
我們附上第一手及官方來源,方便你逐一核實。
- 1.Show the Developer tab — Microsoft Support
- 2.Use the Developer tab to create or delete a macro in Excel for Mac — Microsoft Support
- 3.Run a macro in Excel — Microsoft Support
- 4.Save a macro — Microsoft Support
- 5.Change macro security settings in Excel — Microsoft Support
- 6.Enable or disable macros in Microsoft 365 for Mac — Microsoft Support
- 7.Macros from the internet are blocked by default in Office — Microsoft Learn
- 8.Work with VBA macros in Excel for the web — Microsoft Support
- 9.Option Explicit statement — Microsoft Learn
- 10.Data Controls FAQ — OpenAI Help Center
- 11.Checklist on Guidelines for the Use of Generative AI by Employees — Office 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 編輯部負責研究、查證同編寫每一篇內容,並引用官方及第一手來源。
此主題相關文章

ChatGPT 協作 Excel:寫公式、生成 VBA、自動製圖與匯出 PDF 報表
用一份虛構銷售明細完整示範:先讓 ChatGPT 理解欄位與驗收規格,再建立列級銷售額、業務彙總與佔比公式,審查 VBA、重建直條圖,資料適合時再建立圓餅圖,最後輸出具時間戳的 PDF。

Google 表單複選資料整理:用 ChatGPT 寫 Excel VBA 拆分報名名單
Google 表單的核取方塊答案全擠在同一格?本文用匿名範例把分隔符號內的選項拆成逐列名單,完整示範需求規格、ChatGPT 提示詞、VBA、Module、測試、驗算與 Power Query 替代方案。

AI 寵物 Podcast 完整教學:用小雲雀、即夢製作貓狗吐槽對話影片
由一張貓狗 Podcast 畫面開始,逐步示範拆解參考、寫雙角色對白、用小雲雀快速生成,以及在即夢建立寵物主持圖、製作逐句對口型和剪成多人對話。本文按 2026 年 7 月現行介面修正舊版模型名稱,附可直接改寫的提示詞、成品預覽、費用判斷與逐格品質檢查。