【发布时间】:2018-08-01 01:21:04
【问题描述】:
如何像在 Microsoft Excel 中一样创建 Word VBA 个人代码库?我有这个工作,但今天它坏了,我不能让它再次工作。我最初这样做是因为我的 Normal.dot 文件爆炸了,我丢失了所有的宏。我找到了一篇博客文章,描述了如何做到这一点,但我找不到回到那里的路。我已经在 Google 上进行了广泛的搜索,但没有找到解决方案。
这里有一些曲折,如下所述...
在 Microsoft Excel 中,可以轻松创建“代码库项目”。这只是一个包含 VBA 模块的标准 XLSB 文件,保存在 PERSONAL.XLSB 文件旁边的 ..\Excel\STARTUP 文件夹中。
当 VBA 编辑器在任何其他 XLSX/B 文件中打开时,代码库文件中的模块始终可见。并且不需要创建 VBA 项目引用来查看它们。库模块可以在本地编辑,就好像它们是任何其他文件的组成部分一样,无需在另一个窗口中打开库文件即可这样做,如图所示...
但是……在 Microsoft Word 中,它的工作方式似乎有所不同,而且……很奇怪。如果这样做:使用自定义代码模块创建一个 DOCM 文件,并将其保存在 ..\Word\Startup\ 文件夹中,这些模块在 VBA 项目资源管理器中不可见。
遵循从 Excel 到 Word 的逻辑链,并像其他人所做的那样...将 DOCM 保存为 DOTM,并将其与 Normal.dotm 文件一起保存在 ..\Templates 文件夹中。不过,它在 Project Explorer 中不可见。
直到打开 Normal.dotm 进行编辑并且库 DOTM 作为 VBA 项目参考添加后,它才最终出现在项目资源管理器中,但仅在 Normal 打开时才出现。另外...它会打开代码库文件以在另一个窗口中进行编辑...!如果 Normal 与该引用一起保存,并从中创建了一个新文档,则无法编辑库代码并显示错误“项目无法查看”...
直到在秒窗口中打开库 DOTM 文件进行编辑,它的代码才变得可编辑,并且它同时在所有文档的所有 Word VBA 窗口中这样做。 p>
有一线希望:如果我从库 DOTM 而不是 Normal.DOTM 创建一个新的空白 DOC,它可以工作..!从库创建的任何文档都保留了指向那里的代码模块的链接,包括任何新的或编辑过的,并且可以在 Project Explorer 中进行本地编辑。这也包括 Normal.DOTM 中的代码模块。
似乎“可编辑性”是一种方式:从任何其他模板创建的文档可以查看和编辑他们自己的代码和 Normal.DOTM 中的代码,但反过来不行:从 Normal.DOTM 创建的文档只能看到他们自己的代码。
如何为所有文档建立双向连接,无论它们是从什么模板创建的......??
我一直试图解决这可能是安全/恶意软件问题的可能性,但我想不出一个。如果已在“信任”设置中启用了宏,那么无论如何恶意软件已经有 99% 正在控制机器。剩下的唯一步骤是启用 VBIDE。
【问题讨论】:
-
基本上,这就是它在 Word 中的工作方式。没有其他办法。 Normal.dotm 是唯一的“通用”宏“容器”。其他插件模板项目需要引用才能被其他代码使用。为了更改代码,需要显式打开模板。在 Word 中,加载项模板中始终可用的是面向用户的内容,例如:功能区自定义、键盘快捷键、构建块。 Excel 和 Word 在模板的使用方式上有很大不同。例如,Word 文档保留了一个指向创建它们的模板的链接——Excel 就不是这样。
-
谢谢。与我在 Access VBA 和 Excel VBA 中所做的工作相比,我只使用 Word VBA 的一小部分时间,所以其中一些对我来说是新的领域。昨天我花了很多时间在 Locals 窗口中的对象周围嗅探,并第一次发现了 Building Blocks。我还发现了文档与其模板之间的链接,并且我试图找到一种编程方式来在文档和模板之间创建这样的链接,它确实不是源自,但还没有骰子.
-
啊,没问题:
Document.AttachedTemplate = filePathToTemplate -
有趣。我将不得不对此进行试验,但明天...谢谢..!