我有一个职位,我必须全职编写Visual Basic Macros来支持公司的许多部门。我做得很好,学到了很多,并且很享受我的位置。
我们正在制定未来的计划,虽然我非常擅长搜索我需要的这些项目的信息(并且堆栈溢出是其中的一个很好的资源),我对某些东西感到沮丧我一直试图做一点。
这是土地的平原。我们通过网络驱动器分发附加到各种其他程序的宏,公司的每个人都可以访问。这些宏还与我们公司使用的专有系统连接并自动化。因此,当对该系统进行细微更改时,我们必须对大量宏进行更改以保持最新。
因此,我们想要尝试做的是创建与我们的专有系统交互的方法的DLL。我们想将该DLL放在网络驱动器上,并为那里的所有宏设置引用。不幸的是,至少在目前,我们还没有访问视觉工作室。我们可以访问的所有开发环境都是Visual Basic 6.5,因为它与办公室打包在一起。我们正在努力争取更多,但在大公司工作的任何人都知道这是怎么回事。
所以,我想知道是否可以使用visual basic编辑器创建一个DLL,如果我认为任何问题都有几十个宏可能在同一时间访问它。
提前感谢您提供的任何帮助或建议。
答案 0 :(得分:1)
我假设您使用的是Office 2007产品。 VBA是一种脚本语言,您可以使用它来构建宏。 DLL是编译的程序集。 VBA编辑器不允许您创建DLL。
您可以使用Visual Basic(不是Visual Basic for Applications)来创建DLL,然后在宏中引用它们。
您还可以使用.NET创建unmanaged export library as mentioned in this post,然后在宏中引用它。虽然没有必要,但我建议使用Visual Studio来构建DLL。
我将说明显而易见的事实 - 为什么不投资构建.NET应用程序(或Java或更多企业)而不是维护宏?您可以构建灵活的配置,以便在您的专有系统更改时,应用程序也会智能地更改其参数。这可能需要一些时间,但它会减少通过宏的维护。
您可能无法选择。在这种情况下,我建议以只需要改变一两个而不是多个的方式拆分宏。适当减少依赖关系,所有易于更改的宏都可以放在一个位置。同样,这可能是不可行的。在这种情况下,将所有宏并将它们组合到Web服务中(如果Visual Studio / .NET不可用,您可以使用开源PHP / Python等),然后将您的办公产品更改为调用Web服务。关于calling web services in excel is here的帖子。
答案 1 :(得分:0)
虽然您无法使用VBA构建DLL,但您可以使用共享宏构建Excel加载项(.xla)并将其存储在网络驱动器上。