【发布时间】:2010-12-10 12:17:42
【问题描述】:
和罐头上写的差不多。我试过谷歌搜索,但找不到任何有用的东西。
我正在尝试自动化一个过程,其中一部分涉及从 access 2003 数据库运行表单/VBA 代码。从 C# 调用这些的最佳方法是什么?
【问题讨论】:
和罐头上写的差不多。我试过谷歌搜索,但找不到任何有用的东西。
我正在尝试自动化一个过程,其中一部分涉及从 access 2003 数据库运行表单/VBA 代码。从 C# 调用这些的最佳方法是什么?
【问题讨论】:
Primary Interop Assemblies 可让您从 C# 应用程序自动化 Access 2003。特别是,您应该能够使用 DoCmd.OpenForm 和 DoCmd.RunCode 等命令,从而允许您运行 Access 2003 表单和 VBA 代码。
【讨论】:
在单独的 COM dll 中创建 VBA 代码,然后您可以使用 COM 互操作从 C# 调用
例如,请参阅 SO 问题:Using a COM dll from C# without a type library。
您可以从 C# 项目。一般步骤如下 如下:
找到要使用的 COM 组件并注册它。使用 regsvr32.exe 来 注册或取消注册 COM DLL。
向项目添加对 COM 组件或类型库的引用。
添加引用时,Visual Studio 使用类型库导入器 (Tlbimp.exe),它采用一个类型 库作为输入,输出 .NET 框架互操作程序集。这 程序集,也称为运行时 可调用包装器 (RCW),包含 托管类和接口 包装 COM 类和接口 在类型库中。视觉的 Studio 向项目添加参考 到生成的程序集。
创建在 RCW 中定义的类的实例。这反过来, 创建 COM 对象的实例。
像使用其他托管对象一样使用该对象。当对象 通过垃圾收集回收, COM 对象的实例也是 从内存中释放。
【讨论】: