當你建立一個新的資料庫時,通常會先建立資料庫物件,例如資料表、表單和報告。 某個時候,你可能需要加入程式來自動化流程並連結這些物件。 本文介紹 Access 中的程式設計工具。
本文內容
什麼是程式設計?
在 Access 中,程式設計是指透過使用 Access 巨集或 Visual Basic for Applications (VBA) 程式碼,為你的資料庫添加功能。 例如,你可以建立一個表單和一個報告,然後在表單中加入一個命令按鈕,當你選擇報表時會打開它。 在這種情況下,你建立一個巨集或 VBA 程序,然後設定指令按鈕的 OnClick 事件屬性,讓指令按鈕執行該巨集或程序。 對於簡單的操作,例如開啟報告,你可以使用指令按鈕精靈來完成工作,或者關閉精靈並自行編程。
注意
許多 Microsoft Office 程式使用「巨集」一詞來指 VBA 代程式碼。 這可能會讓 Access 使用者感到困惑,因為在 Access 中,「巨集」一詞指的是你用巨集建構器組合出來的一組命名的巨集動作。 存取的巨集動作僅代表 中 VBA可用指令的子集。 巨集建構器比 Visual Basic 編輯器提供更有結構的介面,讓你可以在不學程式碼 VBA 的情況下為控制項和物件加入程式設計。 在 Access 說明文章中,Access 巨集被稱為巨集。
VBA 程式碼被稱為 VBA 程式碼、函式或程序。
VBA 程式碼會儲存在類別模組中,類別模組是個別表單或報告的一部分,通常只包含這些物件的程式碼;以及模組中,模組不綁定特定物件,通常包含你可以在整個資料庫中使用的全域程式碼。
像表單和報告這類物件,以及指令按鈕和文字框這類控制項,都有事件屬性,你可以附加巨集或程序。 每個事件屬性都與特定事件相關聯,例如點擊滑鼠、開啟表單或在文字框中更改資料。 事件也可能由存取外部因素觸發,例如系統事件,或是由附加於其他事件的巨集或程序所觸發。 如果你在多個物件的事件屬性中加入許多巨集或程序,資料庫可能會變得複雜。 不過大多數情況下,你只需很少的程式設計就能達到想要的效果。
我該使用巨集還是 VBA 程式碼?
是否使用巨集, VBA或兩者皆用,主要取決於你打算如何部署或分發資料庫。 例如,如果資料庫儲存在你的電腦上,你是唯一的使用者,且你對使用 VBA 程式碼感到自在,你可能會決定用它 VBA 來完成大多數程式設計任務。 不過,如果你打算從檔案伺服器與他人分享資料庫,可能因為安全考量而避免使用 VBA 。
你決定使用巨集或 VBA 程式碼時,請基於兩個考量:安全性與你想要的功能。 安全性很重要,因為它 VBA 可能被用來撰寫可能破壞你資料或損害電腦檔案的程式碼。 當你使用別人建立的資料庫時,只有 VBA 在你確定該資料庫來自可信來源時,才啟用程式碼。 當你建立一個讓其他人會使用的資料庫時,盡量避免加入需要使用者明確信任資料庫的程式設計工具。 避免此要求的一般技巧將在本節稍後介紹。
為了幫助保護資料庫,盡量在能用時使用巨集,並且只用 VBA 在無法用巨集動作執行的操作上。 另外,盡量只使用不需要資料庫信任才能執行的巨集動作。 以這種方式限制巨集動作,讓使用者有信心資料庫沒有程式設計,不會損害他們電腦上的資料或其他檔案。
巨集的考量事項
Access 包含許多巨集動作,讓你能建立比早期版本更強大的巨集。 比方說,您現在可以使用巨集指令來建立並使用全域暫存變數,並能使用新的錯誤處理巨集指令,更順利地解決錯誤。 在早期版本的 Access 中,這些功能僅在 VBA. 你也可以直接將巨集嵌入物件或控制項的事件屬性中。 嵌入的巨集會成為物件或控制項的一部分,當物件或控制項被移動或複製時,它會一直存在。
巨集提供處理許多程式設計工作 (例如開啟或關閉表單以及執行報表) 的簡易方式。 你可以快速將你建立的資料庫物件(如表單和報告)串連起來,因為語法需求不多。 每個指令的引數都會顯示在巨集建立器中。
除了巨集所提供已提高的安全性以及便於使用之外,您必須在執行下列工作時使用巨集:
指派指令或一組指令至機碼。 這需要建立一個名為
AutoKeys的巨集群組。在資料庫第一次開啟時執行一個動作或一連串的動作。 這需要建立一個名為
AutoExec的巨集。注意
AutoExec即使你在存取選項對話框中指定啟動表單,並將巨VBA集或程式碼附加到該表單OnOpen或OnLoad事件後,巨集也會先VBA執行。
欲了解更多如何建立巨集量營養素的資訊,請參閱 「理解巨集」。
VBA 的考量事項
如果你想做以下任一,請用 VBA 巨集代替巨集:
- 可以使用內建功能,或是自行創建。 存取包含許多內建函數,例如
IPmt計算利息支付的函數。 你可以用這些函式來進行計算,而不必產生複雜的表達式。 透過使用VBA,你也可以建立自己的函式,執行超出表達式能力範圍的計算,或取代複雜的表達式。 此外,您可以使用在運算式中建立的函數,將常見作業套用至多個物件。 - 創造或操作物件。 在大多數情況下,最簡單的做法是在物件的設計檢視中建立和修改物件。 不過在某些情況下,你可能想修改程式碼中物件的定義。 透過使用
VBA,你可以操作資料庫中的所有物件,以及資料庫本身。 - 執行系統層級的操作。 你可以
RunApp在 Access 內執行巨集執行其他程式,例如Microsoft Excel,但無法用巨集做太多 Access 以外的操作。 透過使用VBA,您可以檢查電腦上是否有檔案存在,使用自動化或動態資料交換 (DDE) 與 Excel 等其他Microsoft Windows 程式溝通,並呼叫 Windows 動態連結函式庫中的函式, (DLLs) 。 - 一次處理一張紀錄。 你可以用
VBA它一步步通過一組記錄,一次只記錄一條,對每條記錄執行操作。 相較之下,巨集同時處理整組紀錄。
使用命令按鈕精靈來執行一般程式設計工作
如果您要新增命令按鈕到表單上,命令按鈕精靈能協助您開始進行程式設計。 精靈可協助您建立能執行特定工作的命令按鈕。 在 Access (.accdb) 檔案中,精靈會建立一個嵌入 OnClick 指令按鈕屬性中的 巨集。 在 or .adp 檔案中.mdb,精靈會產生VBA程式碼,因為這些檔案格式中沒有嵌入巨集。 無論哪種情況,你都可以修改或強化巨集或 VBA 程式碼,以更符合你的需求。
在 [瀏覽窗格] 中,以滑鼠右鍵按一下要新增命令按鈕的表單,然後按一下 [設計檢視]。
在 表單設計 標籤中,點擊向下箭頭顯示 控制項 圖庫,然後確認已選擇 使用控制精靈 。
在 [表單設計] 索引標籤上,按一下 [控制項] 庫中的 [按鈕]。
在表單設計格線中,按一下您要放置命令按鈕的位置。 命令按鈕精靈會隨即啟動。
在精靈的第一個頁面上按一下 [類別] 清單中的每個類別,來查看精靈可以用程式設計讓命令按鈕執行哪些動作。 在 [動作] 清單中,選取想要的動作,然後按一下 [下一步]。
依據您想要命令按鈕上顯示的是文字或圖片,來按一下 [文字] 選項或 [圖片] 選項。
- 如果想要顯示文字,您可以在 [文字] 選項旁的方塊中編輯文字。
- 如果想要顯示圖片,精靈會建議清單中的圖片。 如果您想要選取不同的圖片,請選取 [顯示所有圖片] 核取方塊來顯示 Access 提供之命令按鈕圖片的完整清單,或按一下 [瀏覽] 來選取儲存在其他位置的圖片。 按一下 [下一步]。
為命令按鈕輸入有意義的名稱。 此步驟為可選,且此名稱不會顯示在指令鍵上。 不過,輸入有意義的名稱是個好主意,這樣當你之後需要參考指令鍵時,例如在表單上設定控制鍵的制表順序時,會更容易分辨出指令鍵。 例如,如果指令按鈕關閉表單,你可以將其命名為
cmdClose或CommandClose。按一下 [完成]。 Access 就會將命令按鈕放在表單上。
如果你想看看精靈為你編寫了什麼,請依照以下可選步驟操作:
如果屬性表還沒顯示,按 F4 即可顯示。
按一下屬性表中的 [事件] 索引標籤。
在 「點擊」 屬性框中,點擊 建置 按鈕。
Access 會啟動巨集建立器,並顯示精靈建立的巨集。 如果你想的話,可以編輯巨集。 欲了解更多資訊,請參閱 「理解巨量營養素」。 完成後,請在 [巨集設計] 索引標籤的 [關閉] 群組中,按一下 [關閉] 來關閉 [巨集建立器]。 如果 Access 提示您儲存變更並更新屬性,請按一下 [是] 來儲存變更,或按 [否] 來拒絕變更。
在 [表單設計] 索引標籤的 [檢視] 群組中,按一下 [檢視],再按一下 [表單檢視]。 按一下新的命令按鈕,確認它依您預期運作。
了解巨集
巨集是一種工具,讓你能自動化任務並為表單、報告和控制項添加功能。 舉例來說,如果你在表單中新增一個命令按鈕,你可以將按鈕的 OnClick 事件屬性與一個包含你希望按鈕每次被選取時執行指令的巨集關聯起來。
您會在 Access 巨集中透過建置一份要執行的動作清單來建置程式碼,因此將它當成是簡化的程式設計語言會相當有幫助。 建立巨集時,您會選取下拉式清單中的各個動作,然後為每個動作填入所需的資訊。 巨集讓你能在不寫模組程式碼 VBA 的情況下,為表單、報表和控制項添加功能。 巨集提供了 中可用的指令 VBA子集,大多數人覺得建立巨集比寫 VBA 程式碼容易。
您可以使用巨集建立器來建立巨集,如下圖所示。
若要顯示巨集建立器:
- 在 [建立] 索引標籤上,按一下 [巨集與程式碼] 群組中的 [巨集]。
了解 VBA 程式碼
像巨集一樣,可以 VBA 讓你在 Access 應用程式中加入自動化和其他功能。 你可以透過第三方控制來擴充 VBA 功能,也能為特定需求撰寫自己的功能與程序。
一個快速的入門 VBA 方法是先建立一個 Access 巨集,然後再轉換成 VBA 程式碼。 相關操作的指令包含在 「轉換巨集」成 VBA 程式碼中。 此功能會建立一個新 VBA 模組,執行在巨集中執行等效操作。 它也會開啟 Visual Basic 編輯器,讓您可以開始修改程序。 當你在 Visual Basic 編輯器中工作時,可以點擊關鍵字並按 F1 開啟 Access 開發者說明,並進一步了解每個關鍵字。 接著你可以探索 Access 開發者幫助,發現新的指令來幫助你執行想要的程式設計任務。
將巨集轉換為 VBA 程式碼
你可以用 Access 自動將巨集轉換成 VBA 模組或類別模組。 您可以轉換附加至表單或報表的巨集,無論它們是以獨立物件或內嵌巨集的形式存在。 你也可以轉換那些不綁定在特定表單或報告上的全域巨集。
轉換附加至表單或報表的巨集
此過程會 VBA 轉換為表單或報告中所引用或嵌入的任何巨集,或其控制項中的任何函數,並將程式碼加入 VBA 表單或報表的類別模組中。 類別模組會成為表單或報表的一部分,並會在表單或報表移動或複製時隨之移動。
在導航窗格中,右鍵點擊表單或報告,然後點選 「設計檢視」。
在 [表單設計] 索引標籤上的 [工具] 群組中,按一下 [轉換表單的巨集至 Visual Basic] 或 [轉換報表的巨集至 Visual Basic]。
在 「轉換表單巨集」 或「 轉換報告巨集 」對話框中,選擇是否希望 Access 為其產生的函式加入錯誤處理程式碼。 如果你的巨集包含註解,也可以選擇是否要這些註解包含在函式中。 按一下 [轉換] 以繼續。 如果表單或報表沒有現有的類別模組,Access 會建立一個,並為每個與該表單或報表關聯的巨集新增程序至該模組。 Access 也會更改表單或報告的事件屬性,使其執行新的
VBA程序而非巨集。要查看並編輯程式碼:
VBA當表單或報告在設計檢視中仍開啟時,如果屬性表尚未顯示,按 F4 即可顯示。
在屬性工作表的 事件 標籤中,點選任何顯示
[Event Procedure]的屬性框,然後點選 建置 按鈕。 若要檢視特定控制項的事件屬性,請按一下控制項來加以選取。 若要檢視整張表單或報表的事件屬性,請從屬性工作表頂端的下拉式清單選取 [表單] 或 [報表]。
Access 會開啟 Visual Basic 編輯器,並在其類別模組中顯示事件程序。 您可以向上或向下捲動,來檢視位於相同類別模組中的任何其他程序。
轉換全域巨集
在 [瀏覽窗格] 中,以滑鼠右鍵按一下要轉換的巨集,然後按一下 [設計檢視]。
在 [巨集設計] 索引標籤的 [工具] 群組中,按一下 [將巨集轉換成 Visual Basic]。
在 [轉換巨集] 對話方塊中,選取想要的選項,然後按一下 [轉換]。 Access 會轉換巨集並開啟 Visual Basic 編輯器。
要查看並編輯程式碼:
VBA- 如果 Visual Basic 編輯器中未顯示 [專案總管] 窗格,請按一下 [檢視] 功能表上的 [專案總管]。
- 展開您目前使用之資料庫名稱下方的樹狀目錄。
- 在模組中,雙擊模組。
Converted Macro-<macro name>[Visual Basic 編輯器] 會隨即開啟模組。
附加 VBA 函數至事件屬性
當你將全域巨集轉換成 VBA時,程式碼 VBA 會被放入標準模組中。 跟類別模組不同的是,標準模組不是表單或報表的一部分。 您很可能會想要將函數與表單、報表或控制項上的事件屬性產生關聯,好讓程式碼完全符合您想要它執行的時機與位置。 為此,你可以將程式碼複製 VBA 到類別模組,然後將其與事件屬性關聯,或者透過以下程序從事件屬性呼叫標準模組。
- 記下 Visual Basic 編輯器 (VBE) 中的函數名稱。 例如,如果你將一個名為
MyMacro的巨集轉換成 ,函式名稱將是MyMacro()。 - 關閉 Visual Basic 編輯器。
- 在導覽窗格中,右鍵點擊你想關聯該功能的表單或報表,然後點選 設計檢視。
- 按一下您想要關聯函數的控制項或區段。
- 如果屬性表還沒顯示,按 F4 即可顯示。
- 在屬性表的 [事件] 索引標籤上,按一下您想要關聯函數的事件屬性方塊。
- 在屬性框中輸入等號 (
=) 接著函數名稱——例如。=MyMacro()請務必加上括號。 - 按一下快速存取工具列上的 [儲存] 來儲存表單或報表。
- 在 [瀏覽窗格] 中,按兩下表單或報表並進行測試,確定程式碼運作正常。
你現在已經知道將程式碼加入 VBA 資料庫的基本步驟了。 本文僅描述如何開始的基本步驟。 許多優秀的參考書和線上資源都能幫助你提升程式設計能力。