使用 VBA 编辑器创建 DLL



我有一个职位,我基本上全职编写Visual Basic Macros来支持公司的许多部门。 我做得很好,学到了很多东西,也很享受我的位置。

我们正在制定未来的计划,虽然我非常擅长搜索这些项目所需的信息(堆栈溢出在这方面是一个很好的资源),但我一直在尝试做一些事情。

这是土地的布局。 我们通过公司中的每个人都可以访问的网络驱动器分发附加到各种其他程序的宏。 这些宏还与我们公司使用的专有系统交互并实现自动化。 因此,当对该系统进行轻微更改时,我们必须对大量宏进行更改以保持最新状态。

因此,我们想尝试做的是创建一个用于与我们的专有系统交互的方法的DLL。 我们希望将该 DLL 放在网络驱动器上,并在那里设置所有宏的引用。 不幸的是,至少目前,我们无法访问Visual Studio。 就开发环境而言,我们所能访问的只是Visual Basic 6.5,因为它与Office一起打包。 我们正在努力获得更多,但你们中任何在大公司工作的人都知道这是怎么回事。

因此,我

想知道是否可以使用可视化基本编辑器创建DLL,以及我是否应该预料到数十个宏可能同时访问它的任何问题。

提前感谢您提供的任何帮助或建议。

我假设您使用的是Office 2007产品。VBA 是一种脚本语言,您可以使用它来构建宏。DLL 是已编译的程序集。VBA编辑器将不允许您创建DLL。

您可以使用 Visual Basic

(而不是 Visual Basic for Applications)创建一个 DLL,然后在宏中引用它们。

您还可以使用 .NET 创建非托管导出库,如本文所述,然后在宏中引用它。虽然不是必需的,但我建议使用Visual Studio来构建DLL。

我将说明显而易见的事实 - 为什么不投资构建.NET应用程序(或Java或更进取的东西)而不是维护宏?您可以构建灵活的配置,以便在专有系统更改时,应用程序也会智能地更改其参数。这可能需要一些时间,但它会通过宏减少维护。

您可能别无选择。在这种情况下,我建议以一种只需要更改一两个宏而不是许多宏的方式拆分宏。适当地减少依赖关系,所有容易更改的宏都可以放在一个位置。同样,这可能不可行。在这种情况下,获取所有宏并将它们组合到 Web 服务中(如果 Visual Studio/.NET 不可用,您可以使用开源 PHP/Python 等),然后更改您的办公产品以调用 Web 服务。一篇关于在 excel 中调用 Web 服务的帖子在这里。

虽然不能使用 VBA 生成 DLL,但可以使用共享宏生成 Excel 加载项 (.xla) 并将其存储在网络驱动器上。

最新更新