在办公应用程序之间共享代码

3
我写了两个插件,一个是Excel的,另一个是Word的。但是这些插件有很多重复的内容:数据库处理、文件处理、数组处理,我想更新一个地方而不是两个。
我们可以访问SharePoint,并且可以获得Visual Studio的访问权限。问题在于人们喜欢使用文件浏览器查找正确的Word或Excel文件,然后打开它,然后在应用程序内部按下一个按钮,该按钮应该对活动文档执行操作。
这就是为什么我们还没有将其编写为.NET应用程序的原因,因为这要求人们在.NET应用程序中浏览文件,除非我弄错了。
是否可能制作一个既适用于Excel又适用于Word的插件,或者是一个dll?另一个重要的事情是,它应该很容易向用户推出新版本,例如存储在网络驱动器或类似位置。

2
在C#中创建一个可见的COM类库,然后在您的Add-in代码中调用它。您仍然可以使用Word和Excel中的文件浏览器,但是调用.NET类来执行共享逻辑。例如:https://dev59.com/imIj5IYBdhLWcg3wuHXP - Robin Mackenzie
1
你的问题比较广泛。我认为一个好的起点可能是使用Visual Studio创建Office的VSTO插件。可以将多个应用程序/插件共享的代码外包到dll中。并且可以通过GPO进行部署。 - Pᴇʜ
1个回答

1

是的,这是可能的

较为困难的方式

您可以创建一个 .Net DLL 并从 VBA 中调用它。在 Visual Studio 中,许多人使用 Robert Giesecke 的 Unmannaged Exports 创建无需注册的 DLL(这样 DLL 可以与您的文档一起发布,并且只要找到它就可以使用)。

或者您可以像 Hans Passant 所示 那样手动完成。

较为简单的方式

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

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

这是一篇可能有帮助的指南:http://www.geeksengine.com/article/create-dll.html

但是如果你想将DLL存储在网络驱动器上,那么你可能真的需要考虑以“困难的方式”来处理它,这种情况下请查看这里: https://dev59.com/y1bUa4cB1Zd3GeqPDvyI#5934745 和这里: https://msdn.microsoft.com/en-us/library/bb687915.aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接