是否可以使用 Excel::_Application::Run 调用 C# dll 方法

Can I call a C# dll method using Excel::_Application::Run

本文关键字:调用 dll 方法 Run 可以使 Excel 是否 Application      更新时间:2023-10-16

我有一个用 c++ 编写的应用程序,它使用 Excel 来显示数据。我还在 vsto 中为 Excel 编写了插件。

现在我想向我的 c++ 应用程序发送一个关于加载项单击的事件。

为了实现这一点,我用 c++ 编写了 com 接口。现在我想在 vsto c# dll 中为该类设置对象,以便我可以从我的 c++ 应用程序调用方法。

Excel::_ApplicationPtr &app;
CComObject<TestEvent> *obj = new CComObject<TestEvent>;
obj->Init(this);
variant_t v = static_cast<IDispatch *>(obj);
app->Run("SetEventSinkTest", v);    

我可以从我的 C# dll 调用用 c++ 编写的 SetEventSinkTest 方法吗?我已经从 c++ 应用程序启动了 Excel 进程,该应用程序具有用 c# 编写的 vsto 插件。我想将 Excel 加载项单击事件返回到 c++ 应用程序。

为了实现这一点,我有一个类 TestEvent 的 com 对象,其指针将在 C# vsto dll 中设置。 在插件单击事件中,我将执行来自 TestEvent 类的函数,我想在 vsto c# 项目中设置其对象。

这在 COM 和 VSTO 中是否可行

我找到了使用 Excel::_Application::Run 方法调用 Excel addin 方法 c++ 应用程序的解决方案。

为此,我们首先需要在 .net 类库中编写自动化插件。

电阻网组件以公开此自动化插件方法。

有了这个,我们可以直接从C ++调用自动化插件

在 Excel 中使用 C# .NET 用户定义函数 (UDF(http://www.adamtibi.net/07-2012/using-c-sharp-net-user-defined-functions-udf-in-excel