Access 程式設計簡介

套用到
Microsoft 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即使您在 [Access 選項] 對話方塊中指定了啟動表單,並將巨集或VBA程式碼附加至該表單OnOpenOnLoad事件,巨集仍會在任何其他巨集或VBA程式碼之前執行。

如需如何建置巨集的詳細資訊,請參閱 了解巨集

VBA 的考量事項

如果想要執行下列任一項操作,請使用 VBA 而非巨集:

  • 使用內建函數或建立您自己的函數。 Access 包含許多內建函數,例如 IPmt,可計算利息款項。 您可以使用這些函數來執行計算,而不需建立複雜的運算式。 使用 VBA,您也可以建立自己的函數來執行超出運算式功能的計算,或取代複雜的運算式。 此外,您可以使用在運算式中建立的函數,將常見作業套用至多個物件。
  • 建立或操縱物件。 在大多數情況下,在該物件的 [設計] 檢視中建立和修改物件最簡單。 不過,在某些情況下,您可能會想要在程式碼中操作物件的定義。 藉由使用 VBA,您可以操作資料庫中的所有物件,以及資料庫本身。
  • 執行系統層級的動作。 您可以在巨集中執行 RunApp 巨集指令,以從 Access 內執行另一個程式,例如 Microsoft Excel,但不能使用巨集在 Access 之外執行其他作業。 藉由使用 VBA,您可以檢查電腦上是否有檔案、使用自動化或動態資料交換 (DDE) 與其他 Microsoft Windows 程式通訊,例如 Excel,以及呼叫 Windows 動態連結程式庫中的函數 (DLLs) 。
  • 一次處理一筆記錄。 您可以使用一次 VBA 一筆記錄逐步處理一組記錄,並對每筆記錄執行作業。 相反地,巨集可以一次處理整組記錄。

頁面頂端

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

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

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

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

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

  4. 在表單設計格線中,按一下您要放置命令按鈕的位置。 命令按鈕精靈會隨即啟動。

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

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

    • 如果想要顯示文字,您可以在 [文字] 選項旁的方塊中編輯文字。
    • 如果想要顯示圖片,精靈會建議清單中的圖片。 如果您想要選取不同的圖片,請選取 [顯示所有圖片] 核取方塊來顯示 Access 提供之命令按鈕圖片的完整清單,或按一下 [瀏覽] 來選取儲存在其他位置的圖片。 按一下 [下一步]
  7. 為命令按鈕輸入有意義的名稱。 此步驟是選擇性的,且此名稱不會顯示在命令按鈕上。 不過,建議您輸入有意義的名稱,以利您稍後若需要參照至該命令按鈕,例如當您要設定表單上控制項的索引標籤順序時,區分命令按鈕會容易得多。 舉例來說,如果命令按鈕會關閉表單,您可以將它cmdCloseCommandClose命名為 或 。

  8. 按一下 [完成]。 Access 就會將命令按鈕放在表單上。

  9. 如果您想要查看精靈為您設定了哪些程式設計,請遵循下列選擇性步驟:

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

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

    3. 在 [ 按一下時] 屬性方塊中,按一下 [ 建置 ] 按鈕。

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

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

頁面頂端

了解巨集

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

您會在 Access 巨集中透過建置一份要執行的動作清單來建置程式碼,因此將它當成是簡化的程式設計語言會相當有幫助。 建立巨集時,您會選取下拉式清單中的各個動作,然後為每個動作填入所需的資訊。 巨集可讓您新增功能到表單、報表及控制項,而不必在模組中 VBA 撰寫程式碼。 巨集提供 中可用的 VBA命令子集,大部分人都會覺得建立巨集比撰寫 VBA 程式碼簡單。

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

若要顯示巨集建立器:

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

頁面頂端

了解 VBA 程式碼

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

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

頁面頂端

將巨集轉換為 VBA 程式碼

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

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

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

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

  2. [表單設計] 索引標籤上的 [工具] 群組中,按一下 [轉換表單的巨集至 Visual Basic][轉換報表的巨集至 Visual Basic]

  3. [轉換表單巨集 ] 或 [轉換報表巨集 ] 對話方塊中,選取是否要 Access 將錯誤處理程式碼新增至其所產生的函數中。 如果您的巨集包含註解,也請選取是否要將這些註解包含在函數中。 按一下 [轉換] 以繼續。 如果表單或報表沒有現有的類別模組,Access 會建立一個,並為每個與該表單或報表關聯的巨集新增程序至該模組。 Access 也會變更表單或報表的事件屬性,讓它們執行新 VBA 程序而非巨集。

  4. 若要檢視和編輯 VBA 程式碼:

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

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

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

轉換全域巨集

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

  2. [巨集設計] 索引標籤的 [工具] 群組中,按一下 [將巨集轉換成 Visual Basic]

  3. 在 [轉換巨集] 對話方塊中,選取想要的選項,然後按一下 [轉換]。 Access 會轉換巨集並開啟 Visual Basic 編輯器。

  4. 若要檢視和編輯 VBA 程式碼:

    1. 如果 Visual Basic 編輯器中未顯示 [專案總管] 窗格,請按一下 [檢視] 功能表上的 [專案總管]
    2. 展開您目前使用之資料庫名稱下方的樹狀目錄。
    3. [模組] 底下,按兩下模組 Converted Macro-<macro name> 。 [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 巨集

使用巨集自動化啟動事件

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

資料庫物件的事件順序

頁面頂端