4

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

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

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

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

所以,我想知道是否可以使用 Visual Basic 编辑器创建一个 DLL,以及我是否应该预料到有几十个宏可能在同一时间访问它的任何问题。

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

4

2 回答 2

1

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

于 2013-09-08T17:32:40.817 回答
0

虽然您无法使用 VBA 构建 DLL,但您可以使用共享宏构建 Excel 加载项 (.xla) 并将其存储在网络驱动器上。

于 2013-09-08T18:23:48.753 回答