使用 VBA 编辑器创建 DLL

use*_*242 5 dll vba

我的职位是全职编写 Visual Basic 宏来支持公司的多个部门。我做得很好,学到了很多东西,也很喜欢我的职位。

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

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

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

因此,我想知道是否可以使用 Visual Basic 编辑器创建 DLL,以及是否会出现数十个宏可能同时访问它的问题。

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

zed*_*xus 2

我假设您使用的是 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 服务的文章。