【问题标题】:How do I create a Word VBA personal VBA code library as I have done in Microsoft Excel..?我如何像在 Microsoft Excel 中一样创建 Word VBA 个人 VBA 代码库..?
【发布时间】: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
  • 有趣。我将不得不对此进行试验,但明天...谢谢..!

标签: vba excel ms-word


【解决方案1】:

A very similar question on Microsoft Answers:

Words 中是否有允许存储“个人宏”的启动文件或模板文件,即在编辑文档时希望始终可用的宏(我正在寻找与 Excel 中的 PERSONAL.XLSB 文件等效的文件,其中我可以存储宏,然后在我打开的所有工作表中都可以使用)。

以及给出的解决方案:

Word 为此使用默认模板 Normal.dotm。存储在 Normal.dotm 中的宏将在所有文档中可用。除此之外,Normal.dotm 还用作默认文档模板,它还存储用户格式化的自动更正条目。

与 Personal.xlsb 一样,Normal.dotm 在全新安装中不存在,但会在需要时创建。

Normal.dotm 的位置是

C:\Users\<username>\AppData\Roaming\Microsoft\Templates

AppData 是一个隐藏文件夹,因此您必须显示隐藏的文件和文件夹才能在 Windows 资源管理器中看到它。

Similar questions(也在 answers.microsoft.com 上)提供了相同类型的解决方案。

应该全局可用的宏可以存储在 Normal.dotm 或 Word 启动文件夹中的模板中。另见:

还有:

在 Word 中,个人设置(未存储在注册表中的设置)存储在 Normal 模板 Normal.dotm 中。当您更改和保存设置或创建宏时,它们会自动保存在 Normal.dotm 中,除非您选择将它们保存在另一个模板中。启动 Word 时会自动加载 Normal.dotm,新的空白文档基于 Normal.dotm。

【讨论】:

  • 是的,我知道 Word 如何使用 Normal.dotm 文件。我试图创建一个库的原因是,当 Normal.dotm 大约两周前爆炸时,我丢失了所有的宏。我在谷歌上搜索了这个问题并找到了一个描述如何做我所寻求的博客条目,但现在我找不到返回该页面的方法。有了进一步的发展。我发现如果我基于我的库 DOTM 文件创建一个新文档,那里的所有代码都是 vilible,加上 Normal.DOTM 中的所有代码。不知何故,当 DOTM 被复制到新的 DOCX 中时,其代码的链接被保留。
  • 对不起,但我无法解析您要说的内容。答案是使用 Normal.dotm。如果您担心丢失数据,那么您应该定期备份该数据(以及任何其他敏感数据)。另一种可能的解决方案是创建一个 Word 加载项,但如果它与 PowerPoint 类似,它就与 Excel 完全不同,而且非常麻烦。最好只使用 Normal.dotm
  • 是的,我正在考虑加载项路由。我想在 IDE 中做很多事情,例如代码格式化、简单的源代码控制和基于计时器的自动保存。
  • 源代码控制将是天赐之物。过去我设法做到这一点的唯一方法是创建一个例程,以编程方式将所有模块导出到包含 Git 存储库的目录。我有一个 python 脚本,然后它将从该 repo 重建 .ppam 加载项。这并不理想,但总比没有好。那是几年前的事了。现在,我想我只需要在 Visual Studio 中做插件,它内置了所有这些功能。
  • 是的。我阅读了使它与 GIT 一起工作的说明,我想,whaaaaaat?一定有更好的方法。我的目标是跨越所有程序的简单 SC。基本上任何具有 VBA 窗口的软件,即 Office,甚至是 Autocad 和 Corel Draw 等非 MS 产品。他们都可以共享代码。我希望。 =-)
猜你喜欢
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2013-02-15
  • 2014-01-12
  • 2019-04-04
  • 1970-01-01
相关资源
最近更新 更多