Applies ToMicrosoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

建立新資料庫時,您通常會從建立資料表、表單和報表等多種資料庫物件開始。 您最終會遇到一種狀況,讓您必須建立程式設計來自動執行特定程序,並將資料庫物件繫結在一起。 本文可協助引導您使用 Access中的程序設計工具。

本文內容

什麼是程式設計?

在 Access中,程式設計是使用 Access 宏或 Visual Basic for Applications (VBA) 程式代碼來將功能新增至資料庫的程式。 舉例來說,假設您建立了一張表單和一張報表,並想要在表單上新增可以在按一下時開啟報表的命令按鈕。 在這個例子中,程式設計就是建立巨集或 VBA 程序,然後設定命令按鈕的 OnClick 事件屬性,讓按一下命令按鈕能執行巨集或程序的過程。 對於簡單的操作 (如開啟報表),您可以使用命令按鈕精靈來執行所有的工作,或者關閉精靈並自行執行程式設計。

附註: 許多 Microsoft Office 程式使用「巨集」一詞來指稱 VBA 程式碼。 這對 Access 使用者可能造成混淆,因為在 Access中,「宏」 一詞是指您可以使用宏建立器組合的具名宏指令集合。 Access 宏指令僅代表 VBA 中可用命令的子集合。 巨集建立器能給您比 Visual Basic 編輯器更結構化的介面,讓您無需學習 VBA 程式碼就能新增控制項和物件。 您應該記得,在 Access 說明文章中, Access 宏稱為宏。 相反地,VBA 程式碼則會稱為 VBA、程式碼、函數或程序。 VBA 程式碼會包含於類別模組 (也就是個別表單或報表的一部分,通常含有針對這些物件的程式碼) 和模組中 (不受限於特定物件,通常含有可用於整個資料庫中的「通用」程式碼)。

物件 (例如表單和報表) 及控制項 (例如命令按鈕和文字方塊) 具有多種您可以附加巨集或程序的事件屬性。 每種事件屬性都與一個特定事件相關,例如按一下滑鼠、開啟表單或修改文字方塊中的資料。 事件也可以由 Access以外的因素觸發,例如系統事件,或是附加至其他事件的宏或程式。 如果您將許多巨集或程序新增至多個物件的數種事件屬性,資料庫可能會因此而變得非常複雜,但在大多數情況下,您可以使用極少的程式來得到您想要的結果。

頁面頂端

我該使用巨集還是 VBA 程式碼?

要決定使用巨集、VBA 或兩者都用,主要取決於您規劃部署或發佈資料庫的方式。 比方說,如果資料庫儲存於您的電腦且您是唯一的使用者,並且如果您習慣使用 VBA 程式碼的話,您可能會決定使用 VBA 執行多數的程式設計工作。 不過,如果您想要透過將資料庫置於檔案伺服器來與其他人共用,基於安全性考量,則不建議您使用 VBA。

決定要使用巨集或 VBA 程式碼時,請考量兩項因素:安全性以及您想要的功能。 需要考量安全性是因為,VBA 可能會被用來建立程式碼,危害您電腦的資料安全性或是毀損其中檔案。 當使用由自己以外的其他人所建立的資料庫時,您應該只在知道該資料庫來自可信任的來源時啟用 VBA 程式碼。 在建立將由其他人使用的資料庫時,您應該避免嘗試加入會需要使用者特別授與該資料庫信任狀態的程式設計工具。 本節稍後將介紹避免使用者信任您資料庫的一般技巧。

為了協助確保資料庫安全性,建議您盡可能使用巨集,並只在進行無法以巨集指令執行的操作時使用 VBA 程式設計。 此外,建議您只使用不需要授與資料庫信任狀態就能執行的巨集指令。 以這種限制使用巨集指令,能讓使用者不必擔心資料庫中具有可能會損害其電腦內資料或其他檔案的程式碼。

巨集的考量事項

Access 包含許多新的宏指令,可讓您建置比使用舊版 Access建立更強大的宏。 比方說,您現在可以使用巨集指令來建立並使用全域暫存變數,並能使用新的錯誤處理巨集指令,更順利地解決錯誤。 在舊版 Access中,只有使用 VBA 才能使用這類功能。 另外,您還可以將巨集直接內嵌至物件或控制項的事件屬性中。 內嵌巨集會成為物件或控制項的一部分,並在該物件或控制項受到移動或複製時,保留在物件或控制項中。

巨集提供處理許多程式設計工作 (例如開啟或關閉表單以及執行報表) 的簡易方式。 因為必須記住的語法很少,所以您可以快速、輕鬆地將您建立的資料庫物件 (表單、報表等) 繫結在一起。 每個指令的引數都會顯示在巨集建立器​​中。

除了巨集所提供已提高的安全性以及便於使用之外,您必須在執行下列工作時使用巨集:

  • 指派指令或一組指令至機碼。 這需要建立稱為 AutoKeys 的巨集群組。

  • 在資料庫第一次開啟時執行一個動作或一連串的動作。 這需要建立名為 AutoExec 的巨集。

    附註:  AutoExec 巨集會在任何巨集或 VBA 程式碼之前執行,即使您在 [Access 選項] 對話方塊中指派了啟動表單,並附加巨集或 VBA 程式碼至該表單的 OnOpenOnLoad 事件也一樣。

如需建立巨集的詳細資訊,請參閱了解巨集一節。

VBA 的考量事項

如果想要執行下列任一項操作,您就應該使用 VBA 程式設計而非巨集:

  • 使用內建函數,或建立您自己的函    數Access 包含許多內建函數,例如 IPmt 函數,可計算利息付款。 您可以使用這些內建函數來執行計算,而不需要建立複雜的表達式。 使用 VBA 程序代碼,您也可以建立自己的函數,以執行超出表達式功能的計算,或是取代複雜的表達式。 此外,您可以使用在表達式中建立的函數,將一般運算套用至多個物件。

  • 建立或操作物件    在大多數的情況下,您會發現在該物件的 [設計] 檢視中建立和修改物件最簡單。 不過,在某些情況下,您可能會想要在程式碼中操作對象的定義。 透過使用 VBA,除了資料庫本身之外,您還可以操作資料庫中的所有物件。

  • 執行系統層級的動作    您可以在宏中執行 RunApp 宏指令,以 (在 Access內執行另一個程式,例如 Microsoft Excel) ,但您無法使用宏執行 Access以外的其他動作。 您可以使用 VBA 檢查計算機上是否有檔案、使用 Automation 或 Dynamic Data Exchange (DDE) 與其他 Microsoft Windows 程式通訊,例如 Excel,以及 Windows 動態連結文檔庫中的呼叫功能, (DLL) 。

  • 一次處理一筆記錄    您可以使用 VBA 逐步執行一組記錄,一次一筆記錄,並執行每筆記錄的作業。 相反地,宏可以一次處理整組記錄。

頁面頂端

使用命令按鈕精靈來執行一般程式設計工作

如果您要新增命令按鈕到表單上,命令按鈕精靈能協助您開始進行程式設計。 精靈可協助您建立能執行特定工作的命令按鈕。 在 Access (.accdb) 檔案中,精靈會建立內嵌在命令按鈕 OnClick 屬性中的宏。 在 .mdb 或 .adp 檔案中,精靈會建立 VBA 程式碼,因為內嵌巨集無法在這些檔案格式中使用。 任一種情況下,您可以接著修改或增強巨集或 VBA 程式碼,以符合您的需求。

  1. 在 [瀏覽窗格] 中,以滑鼠右鍵按一下要新增命令按鈕的表單,然後按一下 [設計檢視]。

  2. 在 [ 表單體設計] 索引 標籤上,按兩下向下箭號以顯示 [ 控件] 庫,然後確定已選取 [使用控件精靈]

  3. 在 [表 單設計] 索引 標籤的 [ 控制項] 庫中,按兩下 [ 按鈕]

  4. 在表單設計格線中,按一下您要放置命令按鈕的位置。

    命令按鈕精靈會隨即啟動。

  5. 在精靈的第一個頁面上按一下 [類別] 清單中的每個類別,來查看精靈可以用程式設計讓命令按鈕執行哪些動作。 在 [動作] 清單中,選取想要的動作,然後按一下 [下一步]。

  6. 依據您想要命令按鈕上顯示的是文字或圖片,來按一下 [文字] 選項或 [圖片] 選項。

    • 如果想要顯示文字,您可以在 [文字] 選項旁的方塊中編輯文字。

    • 如果想要顯示圖片,精靈會建議清單中的圖片。 如果您想要選取不同的圖片,請選取 [ 顯示所有圖片 ] 複選框,以顯示 Access 提供的所有命令按鈕圖片清單,或按兩下 [ 瀏覽 ] 選取儲存在其他位置的圖片。

      按一下 [下一步]。

  7. 為命令按鈕輸入有意義的名稱。 此為選擇性步驟,且這個名稱不會顯示在命令按鈕上。 不過,建議您輸入有意義的名稱,以利您稍後若需要參照至該命令按鈕 (例如,假設您要設定表單上控制項的索引標籤順序),這會讓區分命令按鈕變得更輕鬆。 舉例來說,如果命令按鈕會關閉表單,您可以稱它為 cmdClose 或 CommandClose。

  8. 按一下 [完成]。

    Access 將命令按鈕放在表單上。

  9. 如果您想要查看精靈為您「程式設計」後的成果,請遵循下列選用步驟:

    1. 如果沒有顯示屬性表,請按 F4 以顯示屬性表。

    2. 按一下屬性表中的 [事件] 索引標籤。

    3. 在 [ 按下 屬性] 方塊中,按兩下 [ 建立 ] 按鈕 按鈕影像] 。

      Access 啟動宏建立器,並顯示精靈建立的宏。 如果想要的話,您可以編輯巨集 (如需建立巨集的詳細資訊,請參閱了解巨集一節)。 完成後,請在 [ 宏設計] 索 引標籤的 [ 關閉 ] 群組中,按兩下 [ 關閉 ] 以關閉宏建立器。 如果 Access 提示您儲存變更並更新屬性,請按兩下 [ ] 儲存變更,或按兩下 [ ] 拒絕變更。

  10. 在 [表 單設計] 索引 標籤的 [ 檢視] 群組中,按兩下 [ 檢視],然後按兩下 [ 表單檢視]。 按一下新的命令按鈕,確認它依您預期運作。

頁面頂端

了解巨集

巨集是一種可讓您自動化工作並新增功能到表單、報表及控制項中的工具。 例如,如果您新增一個表單的命令按鈕,就是在建立按鈕的 OnClick 事件屬性與巨集的關聯,該巨集內會包含每您要按鈕在每次按一下時執行的命令。

將 Access 宏視為簡化的程式設計語言,建立要執行的動作清單,藉此建立程式代碼是很有説明的。 建立巨集時,您會選取下拉式清單中的各個動作,然後為每個動作填入所需的資訊。 巨集可讓您新增功能到表單、報表及控制項,而不必在 VBA 模組中撰寫程式碼。 巨集提供可在 VBA 中取得的命令之子集合,大部分人都會覺得建立巨集比撰寫 VBA 程式碼簡單多了。

您可以使用巨集建立器​​來建立巨集,如下圖所示。

Access 2010 巨集建立器

若要顯示巨集建立器:

  • 在 [建立] 索引標籤上,按一下 [巨集與程式碼] 群組中的 [巨集]。

頁面頂端

了解 VBA 程式碼

VBA 與宏一樣,可讓您將自動化及其他功能新增至 Access 應用程式。 您可以使用協力廠商控制項來擴充 VBA,也可以撰寫您自己的函數和程序以符合您自己的特定需求。

快速開始使用 VBA 程序設計的方法是先建置 Access 宏,然後將它轉換成 VBA 程序代碼。 執行此動作的指示包含在將 宏轉換為 VBA 程式代碼一節中。 此功能會建立新的 VBA 模組,以在宏中執行同等的操作。 它也會開啟 Visual Basic 編輯器,讓您可以開始修改程式。 使用 Visual Basic 編輯器時,您可以按 F1 開始 Access 開發人員說明,並深入瞭解每個關鍵字。 然後,您可以探索 Access 開發人員說明,並探索新的命令,協助您執行想要的程序設計工作。

頁面頂端

將巨集轉換為 VBA 程式碼

您可以使用 Access 自動將宏轉換為 VBA 模組或類模組。 您可以轉換附加至表單或報表的巨集,無論它們是以獨立物件或內嵌巨集的形式存在。 您也可以轉換並未附加至特定表單或報表的全域巨集。

轉換附加至表單或報表的巨集

此程序會將任何由表單或報表 (或任何其控制項) 參照 (或內嵌) 的巨集轉換成 VBA,並新增 VBA 程式碼至表單或報表的類別模組。 類別模組會成為表單或報表的一部分,並會在表單或報表移動或複製時隨之移動。

  1. 在 [瀏覽窗格] 中,以滑鼠右鍵按一下表單或報表,然後按一下 [設計檢視]。

  2. 在 [表 單設計] 索引 標籤的 [ 工具 ] 群組中,按兩下 [ 將表單的宏轉換為 Visual Basic ] 或 [ 將報表的宏轉換為 Visual Basic]

  3. 在 [ 轉換表體宏 ] 或 [ 轉換報表宏 ] 對話框中,選取是否要 Access 將錯誤處理程式碼新增至其產生的函數。 此外,如果您在巨集中有任何註解,請選取您是否想要將它們納入成為函數中的註解。 按一下 [轉換] 以繼續。

    如果窗體或報表沒有類別模組存在, Access 建立一個,併為與窗體或報表關聯的每一個宏新增程式至模組。 Access 也會變更表單或報表的事件屬性,使其執行新的 VBA 程式,而非宏。

  4. 若要檢視和編輯 VBA 連結:

    1. 當表單或報表仍開啟於 [設計檢視] 中時,如果沒有顯示屬性表,請按 F4 以顯示屬性表。

    2. 在屬性表的 [ 事件 ] 索引卷標上,按兩下顯示 [事件過程] 的任何屬性方塊,然後按兩下 [建立] 按鈕 按鈕影像。 若要檢視特定控制項的事件屬性,請按一下控制項來加以選取。 若要檢視整張表單或報表的事件屬性,請從屬性工作表頂端的下拉式清單選取 [表單] 或 [報表]。

      Access 開啟 Visual Basic 編輯器,並在其類別模組中顯示事件過程。 您可以向上或向下捲動,來檢視位於相同類別模組中的任何其他程序。

轉換全域巨集

  1. 在 [瀏覽窗格] 中,以滑鼠右鍵按一下要轉換的巨集,然後按一下 [設計檢視]。

  2. 在 [ 宏設計] 索引 標籤的 [ 工具] 群組中,按兩下 [ 將宏轉換為Visual Basic]

  3. 在 [轉換巨集] 對話方塊中,選取想要的選項,然後按一下 [轉換]。

    Access 轉換宏並開啟 Visual Basic 編輯器。

  4. 若要檢視和編輯 VBA 連結:

    1. 如果 Visual Basic 編輯器中未顯示 [專案總管] 窗格,請按一下 [檢視] 功能表上的 [專案總管]。

    2. 展開您目前使用之資料庫名稱下方的樹狀目錄。

    3. 在 [模組] 底下,按兩下模組 [已轉換巨集-] 巨集名稱。

      [Visual Basic 編輯器] 會隨即開啟模組。

附加 VBA 函數至事件屬性

在將全域巨集轉換為 VBA 時,VBA 程式碼會位於標準模組中。 跟類別模組不同的是,標準模組不是表單或報表的一部分。 您很可能會想要將函數與表單、報表或控制項上的事件屬性產生關聯,好讓程式碼完全符合您想要它執行的時機與位置。 若要這麼做,您可以將 VBA 程式碼複製到類別模組並將它關聯事件屬性,或是使用下列程序,從事件屬性中對標準模組執行特殊呼叫。

  1. 記下 Visual Basic 編輯器 (VBE) 中的函數名稱。 舉例來說,如果您轉換了名為 MyMacro 的巨集,其函數名稱會是 MyMacro()。

  2. 關閉 Visual Basic 編輯器。

  3. 在 [瀏覽窗格] 中,以滑鼠右鍵按一下您要與函數進行關聯的表單或報表,然後按一下 [設計檢視]。

  4. 按一下您想要關聯函數的控制項或區段。

  5. 如果沒有顯示屬性表,請按 F4 以顯示屬性表。

  6. 在屬性表的 [事件] 索引標籤上,按一下您想要關聯函數的事件屬性方塊。

  7. 在屬性方塊中,輸入等號 (=),後面接著函數的名稱,例如 =MyMacro()。 請務必加上括號。

  8. 按一下快速存取工具列上的 [儲存] 來儲存表單或報表。

  9. 在 [瀏覽窗格] 中,按兩下表單或報表並進行測試,確定程式碼運作正常。

您現在了解在資料庫中新增 VBA 程式碼的基本步驟。 本文僅說明如何開始使用的基本概念,另外還有許多很好的參考書及線上資源,能協助您打造您的程式設計技巧。

另請參閱

建立使用者介面 (UI) 巨集

使用快速鍵執行 Access 巨集

使用宏自動化啟動事件

建立在資料庫開啟時執行的巨集

資料庫物件的事件順序

頁面頂端

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。