【问题标题】:Running forms and VBA code from C# on an Access 2003 database在 Access 2003 数据库上从 C# 运行表单和 VBA 代码
【发布时间】:2010-12-10 12:17:42
【问题描述】:

和罐头上写的差不多。我试过谷歌搜索,但找不到任何有用的东西。

我正在尝试自动化一个过程,其中一部分涉及从 access 2003 数据库运行表单/VBA 代码。从 C# 调用这些的最佳方法是什么?

【问题讨论】:

    标签: c# ms-access


    【解决方案1】:

    Primary Interop Assemblies 可让您从 C# 应用程序自动化 Access 2003。特别是,您应该能够使用 DoCmd.OpenFormDoCmd.RunCode 等命令,从而允许您运行 Access 2003 表单和 VBA 代码。

    【讨论】:

    • 我已链接到 Microsoft Office 12 对象库并且我有 Microsoft.Office.Core 命名空间,但我找不到任何提及 DoCmd 等的内容。
    • 添加 Microsoft Access 11.0 对象库并查看 Microsoft.Office.Interop.Access 命名空间。
    • 这里是一个例子:msdn.microsoft.com/en-us/library/aa159913(office.11).aspx 例子代码在 VB.NET 中,但概念与 C# 完全相同。
    • 这让我更近了一步,但现在它抱怨它找不到文件 system.mdw 并且该文件是启动所必需的。
    • 它在 C:\WINNT\system32 中寻找它
    【解决方案2】:

    在单独的 COM dll 中创建 VBA 代码,然后您可以使用 COM 互操作从 C# 调用

    例如,请参阅 SO 问题:Using a COM dll from C# without a type library

    Exposing COM Components to C#

    您可以从 C# 项目。一般步骤如下 如下:

    1. 找到要使用的 COM 组件并注册它。使用 regsvr32.exe 来 注册或取消注册 COM DLL。

    2. 向项目添加对 COM 组件或类型库的引用。

    添加引用时,Visual Studio 使用类型库导入器 (Tlbimp.exe),它采用一个类型 库作为输入,输出 .NET 框架互操作程序集。这 程序集,也称为运行时 可调用包装器 (RCW),包含 托管类和接口 包装 COM 类和接口 在类型库中。视觉的 Studio 向项目添加参考 到生成的程序集。

    1. 创建在 RCW 中定义的类的实例。这反过来, 创建 COM 对象的实例。

    2. 像使用其他托管对象一样使用该对象。当对象 通过垃圾收集回收, COM 对象的实例也是 从内存中释放。

    【讨论】:

    • 这并不能帮助我调用与数据库密切相关的 VBA 代码,将调用特定查询的代码放在 dll 中不起作用。我的主要需求是更多的自动化,打开到数据库的“连接”并告诉它运行一段 vba 代码
    猜你喜欢
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多