使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

建立新資料庫時,您通常會從建立資料表、表單和報表等多種資料庫物件開始。 您最終會遇到一種狀況,讓您必須建立程式設計來自動執行特定程序,並將資料庫物件繫結在一起。 本文將協助引導您了解 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 2010 版本開始,Access 包含了許多新巨集指令,能讓您建立比在舊版 Access 中更強大的巨集。 比方說,您現在可以使用巨集指令來建立並使用全域暫存變數,並能使用新的錯誤處理巨集指令,更順利地解決錯誤。 在舊版 Access 中,這幾類功能只能使用 VBA 達成。 另外,您還可以將巨集直接內嵌至物件或控制項的事件屬性中。 內嵌巨集會成為物件或控制項的一部分,並在該物件或控制項受到移動或複製時,保留在物件或控制項中。

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

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

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

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

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

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

VBA 的考量事項

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

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

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

  • 執行系統層級的動作    您可以在宏中執行 RunApp 宏動作,以在 Access 中執行另一個程式 (例如 Microsoft Excel) ,但無法使用宏執行 Access 以外的其他動作。 您可以使用 VBA 檢查電腦上是否有檔案、使用自動化或動態資料交換 (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 模組或類別模組。 您可以轉換附加至表單或報表的巨集,無論它們是以獨立物件或內嵌巨集的形式存在。 您也可以轉換並未附加至特定表單或報表的全域巨集。

附註: 您可以在 Web 資料庫中新增 Visual Basic for Applications (VBA) 程式碼;不過,當資料庫在網頁瀏覽器中執行時,您無法執行該程式碼。 如果 Web 資料庫包含 VBA 程式碼,您必須先使用 Access 開啟 Web 資料庫才可以執行該程式碼。 若要在 Web 資料庫中執行程式設計工作,請改用 Access 巨集。

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

此程序會將任何由表單或報表 (或任何其控制項) 參照 (或內嵌) 的巨集轉換成 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 程式碼的基本步驟。 本文僅說明如何開始使用的基本概念,另外還有許多很好的參考書及線上資源,能協助您打造您的程式設計技巧。

頁面頂端

需要更多協助嗎?

擴展您的技能

探索訓練 >

優先取得新功能

加入 MICROSOFT 365 測試人員 >

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?

感謝您的意見反應!

×