excel - 是否有一个地方可以存储所有 Microsoft Office 产品都可以 Access 的 VBA 代码?

标签 excel ms-access vba ms-word

有没有一种方法可以存储所有 Microsoft Office 产品通用且可 Access 的 VBA 源代码?我在 Access 和 Excel 中使用多种功能,有时甚至在 Word 中使用。我经常修改和添加功能和模块。在项目之间复制、粘贴和维护代码可能会变得乏味,而且我不可避免地会忽略一些东西。

我知道我可以做一些事情,比如在 VB6 或 DotNet 中编写一个 class/ocx/addin,编译它,然后在我的 VBA 项目中引用它,但我希望有更简单的东西。

如果有一种方法可以将 VBA 代码存储在独立文件中,并使用 VBA IDE 以某种独立模式打开它们,那就太棒了,但我知道 IDE 不能那样工作...据我所知。

最佳答案

I know I could do something like write a class/ocx/addin in VB6 or DotNet, compile it, and reference it in my VBA projects, but I was hoping for something more simple.

不幸的是,这是你最好的选择。

如您所知,VBA 代码被托管并封装在主机文档中:VBA 加载项仍然与其主机文档(.xlam 等)相关联,因此无法与其他主机共享.

在 VBA 领域,意味着在 VBA 项目之间共享的是类型库 - 与 VBA 项目分开编译的东西,以及引用 em> 来自任意多个项目。

如果您有 VB6 IDE,则可以编译 VBA 项目可以引用的 32 位 DLL。问题是它不能与 64 位主机一起工作 - 解决方案是使用您选择的 .NET 语言编写的 .NET 类型库,使 COM 可见。请注意,COM 兼容性确实限制了您可以在 API 中公开的内容:例如,您不能公开泛型,并且方法重载会看起来很奇怪。

如果类型库不是您希望探索的途径,那么您的选择相当有限,而且在我看来并不是最佳选择。

IMO 唯一可以“工作”的是一些公共(public)文件夹中的一堆导出的代码文件,并且需要使用该代码的 VBA 项目需要逐字导入这些代码文件。这里的风险是,如果您进行任何更改,使用该代码的未修改版本的其他 VBA 项目将不会“看到”这些更改,这样您就需要将需要修复错误的次数乘以使用该代码的项目数量。

或者您可以使用一些使用 VBIDE 扩展类型库的代码来确保导入的模块集始终与该公共(public)位置中的导出文件完全匹配。

关于excel - 是否有一个地方可以存储所有 Microsoft Office 产品都可以 Access 的 VBA 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47099154/

相关文章:

excel - 使用 NetworkDays.Intl 作为 Excel VBA 中的复杂公式排除非工作时间?

ms-access - 使用序列 1、2、4、8、16、32、64.124 等解码错误代码。在 Access VBA 中

ms-access - Access VBA : Editing a RecordSet in a continuous subform

Excel VBA 句子大小写函数

Excel - 通过单击更改单元格的模式

c++ - visual studio 在 Debug模式下附加到进程

excel - OleDbConnection 未能创建新的 excel 文件

sql - SQL 语句中的全局变量

vba - 从网络主机(LAN 连接的 PC)获取操作系统信息

excel - 用于将 Chartsheets 打印到 PDF 的 VBA 宏以奇怪的比例生成截止图表