Access 程式設計簡介

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

本文內容

什麼是程式設計?

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

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

了解巨集

了解 VBA 程式碼

將巨集轉換為 VBA 程式碼

什麼是程式設計?

在 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 巨集建立器

附註: 請注意,Access 2007 中的巨集​建立器​與上圖中的不同。在 Access 2007 中,巨集建立器​​是一系列資料列和資料行,其中列出了各種巨集動作。

若要顯示巨集建立器:

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

頁面頂端

了解 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 程式碼的基本步驟。本文僅說明如何開始使用的基本概念,另外還有許多很好的參考書及線上資源,能協助您打造您的程式設計技巧。

頁面頂端

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×