2009-10-27 53 views
1

它幾乎可以在錫上顯示出來。我試着用google搜索,但找不到有用的東西。從Access 2003數據庫上的C#運行窗體和VBA代碼

我試圖自動化一個進程,其中一部分涉及從Access 2003數據庫運行窗體/ VBA代碼。從C#中調用這些函數的最佳方式是什麼?

回答

1

Primary Interop Assemblies讓您自動從您的C#應用​​程序Access 2003中。尤其是,您應該能夠使用像DoCmd.OpenFormDoCmd.RunCode這樣的命令,允許您運行Access 2003表單和VBA代碼。

+0

我已經鏈接到Microsoft Office 12對象庫,並且我有Microsoft.Office.Core命名空間,但我找不到任何提及的DoCmd等。 – Tarks 2009-10-27 15:01:51

+0

添加Microsoft Access 11.0對象庫並查看Microsoft.Office.Interop.Access命名空間。 – Heinzi 2009-10-27 15:05:47

+0

下面是一個示例:http://msdn.microsoft.com/en-us/library/aa159913(office.11​​)。aspx 示例代碼在VB.NET中,但對於C#而言,這個概念完全相同。 – Heinzi 2009-10-27 15:07:40

0

創建一個單獨的COM DLL的VBA代碼,然後你可以使用COM互操作從C#

調用舉例來說,看到這麼一個問題:Using a COM dll from C# without a type library

Exposing COM Components to C#

可以消耗從 C#項目中的COM組件。的一般步驟如 如下:

  1. 定位一個COM組件的使用和註冊。使用regsvr32.exe至 註冊或取消註冊COM DLL。

  2. 向項目中添加對COM組件或類型庫的引用。

當添加的基準,視覺 Studio使用類型庫導入 程序(Tlbimp.exe),這需要一個類型 庫作爲輸入,以輸出.NET框架 互操作組件。 程序集也稱爲運行時 可調用包裝程序(RCW),包含 託管類和接口,它們包含類型庫中的COM類和接口 。 Visual Studio爲項目添加了一個參考 到生成的程序集。

  1. 創建一個在RCW中定義的類的實例。這反過來, 創建COM對象的一個​​實例。

  2. 與使用其他管理對象一樣使用對象。當對象 被垃圾回收回收時, COM對象的實例也是從內存中釋放的 。

+0

這不會幫助我調用與數據庫嚴重糾結的VBA代碼,因此將調用特定查詢的代碼放入dll是行不通的。我的主要需求是更多的自動化,打開與數據庫的「連接」,並告訴它運行某個vba代碼 – Tarks 2009-10-27 14:45:14

相關問題