You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#调用运行中MSAccess应用内的指定方法

C#调用运行中MS Access应用方法的实现方案

刚好我之前做过类似的需求,这就把VB.NET的代码转换成C#版本,完美实现你要的功能:

第一步:添加必要的程序集引用

C#本身没有原生的GetObject和AppActivate方法,所以需要先给项目添加Microsoft.VisualBasic程序集引用:

  • 右键项目 → 选择「添加引用」
  • 在「程序集」列表里找到并勾选Microsoft.VisualBasic,点击确定

第二步:编写核心代码

这里提供两种实现方式,按需选择:

方式1:使用dynamic类型(无需引用Access互操作PIA)

这种方式更轻量化,不需要额外引用Office的Access互操作组件:

using Microsoft.VisualBasic;
using System;

class Program
{
    static void Main(string[] args)
    {
        string strMyParam = "你的参数内容"; // 替换成你的实际参数
        string accessFilePath = @"C:\temp\MyAccessApp.accde";
        string accessWindowTitle = "MyAccessApp";

        try
        {
            // 获取已经在运行的Access应用实例
            dynamic accessApp = Interaction.GetObject(accessFilePath);
            
            // 调用目标方法并传入参数
            accessApp.Run("su_MyMethod", strMyParam);
            
            // 激活Access窗口,让它显示在前台
            Interaction.AppActivate(accessWindowTitle);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"操作失败:{ex.Message}");
            // 可以在这里处理实例未运行、方法不存在等异常情况
        }
    }
}

方式2:使用强类型(需要引用Access互操作PIA)

如果你已经引用了Microsoft.Office.Interop.Access程序集,可以用强类型来获得更好的编译时检查:

using Microsoft.VisualBasic;
using Microsoft.Office.Interop.Access;
using System;

class Program
{
    static void Main(string[] args)
    {
        string strMyParam = "你的参数内容";
        string accessFilePath = @"C:\temp\MyAccessApp.accde";
        string accessWindowTitle = "MyAccessApp";

        try
        {
            // 强转成Access应用类型
            Application accessApp = (Application)Interaction.GetObject(accessFilePath);
            
            accessApp.Run("su_MyMethod", strMyParam);
            Interaction.AppActivate(accessWindowTitle);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"操作失败:{ex.Message}");
        }
    }
}

关键说明

  • Interaction.GetObject(accessFilePath):和VB.NET里的GetObject作用完全一致,会找到对应路径下已经运行的Access实例,如果实例未运行会抛出异常
  • accessApp.Run("su_MyMethod", strMyParam):直接调用Access里的公共方法,参数可以按需传递多个
  • Interaction.AppActivate(accessWindowTitle):对应VB的AppActivate,根据窗口标题激活目标程序

内容的提问来源于stack exchange,提问作者acki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:59:03