【问题标题】:Share code between office applications在办公应用程序之间共享代码
【发布时间】:2017-07-27 14:48:18
【问题描述】:

我写了两个插件,1个用于excel,1个用于word。然而,这些插件有很多重复项:数据库处理、文件处理、数组处理,我想更新 1 个位置而不是 2 个。

我们确实可以访问共享点,并且可以访问 Visual Studio。问题是人们喜欢使用文件资源管理器并找到正确的单词或 excel 文件,然后打开它,然后按下应用程序内的按钮,然后应该对活动文档进行处理。

这就是为什么我们还没有将其编写为 .Net 应用程序的原因,因为这需要人们在 .NET 应用程序中浏览文件,除非我弄错了。

是否可以制作同时适用于 excel 和 word 的 Addin 或 dll?另一个重要的事情是向用户推出新版本应该很容易,比如存储在网络驱动器或类似设备上。

【问题讨论】:

  • 在 C# 中创建一个 COM 可见的类库,然后在您的加载项代码中调用它。您仍然可以在 Word 和 Excel 中使用文件浏览器,但调用 .net 类来执行共享逻辑。例如。 stackoverflow.com/questions/19954001/…
  • 你的问题很广泛。我认为一个很好的起点可能是Create VSTO Add-ins for Office by using Visual Studio。不同应用程序/插件共享的代码可以外包到 dll 中。并且可以通过 GPO 进行部署。

标签: c# excel ms-word vba


【解决方案1】:

是的,有可能

艰难的道路

您可以创建一个 .Net DLL 并从 VBA 调用它。在 Visual Studio 中,很多人使用Unmannaged Exports by Robert Giesecke 创建不需要注册的 DLL(这样 DLL 可以随您的文档一起提供,只要可以找到就可以使用它)。

或者,您也可以使用shown here by Hans Passant 手动执行此操作。

简单的方法

创建 DLL 后,您可以在 VBA 模块中声明它,就像声明任何其他 DLL 以进行后期绑定一样,然后从代码中调用它。

或者,如果您乐于创建 DLL 并将其添加为引用(可能不太便携),您可以使其 COM 可见并在 Visual Studio 中为 COM 互操作注册它;这可能是最简单的方法,因为您可以使用 Early Binding。

这是一个可能会有所帮助的演练:http://www.geeksengine.com/article/create-dll.html


但是,如果您想将 DLL 存储在网络驱动器上,那么您可能真的想以“困难的方式”来做,在这种情况下,请看这里:https://stackoverflow.com/a/5934745/3451115 和这里:https://msdn.microsoft.com/en-us/library/bb687915.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2012-12-24
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多