【问题标题】:'Documents.Open' vs. 'Documents.Add' using Word VBA [closed]使用 Word VBA 的“Documents.Open”与“Documents.Add”[关闭]
【发布时间】:2018-11-13 16:21:23
【问题描述】:

我正在使用 Access 中的 VBA 启动一个 Word 文档,它将从正在填写的表单中导入内容到模板文档中。

我尝试同时使用Documents.OpenDocuments.Add,这两种方法都有效,但我不确定我应该使用哪一种。

(我之前在使用 Documents.Open 时遇到过一些间歇性问题,但我想知道这是否与代码中的其他一些错误有关。)

谁能建议在 VBA 中执行此操作的最佳方法?

【问题讨论】:

  • Open 打开一个现有文档,Add创建一个新文档。决定你需要什么。
  • 您能否提供导致您出现问题的代码?对于我们看不到的东西,我们无法为您提供帮助;查看如何创建 minimal reproducible example 并查看 How to Ask
  • 至少你应该准确地说明你想要做什么。就特定问题讨论Documents.OpenDocuments.Add 应该没问题。但是没有上下文就更难讨论了。没有上下文@FunThomas 给了你你的选择。
  • 针对这里的 cmets 和 close 投票原因:这一个明确的问题陈述:“...[data]正在填充到模板文档中”当问题是:“我应该使用Documents.Open 还是Documents.Add?”不需要额外的代码;这不是调试问题 - 这是一个关于如何正确使用 Word 的对象模型的问题,因此很切题。

标签: ms-access ms-word vba


【解决方案1】:

如果您的目标是从模板(无论是 doc、docx、docm、dot、dotx 还是 dotm 文件)创建新文档,看起来就是这种情况,那么您应该使用 Documents.Add

通常在这种情况下,不应更改原始文档(模板)-Documents.Add 确保这一点。使用 Documents.Open 的变通方法(例如以不同的文件名保存)是一个额外的步骤(效率低下)并且可能会出错。

当模板是真正的模板(dot、dotx、dotm)时,另一个因素是默认情况下任何新文档都保留到模板的链接(“附加”到模板)。这意味着文档可以共享存储在模板中的构建块、功能区 UI、键盘快捷键和(假设不是 docx)宏代码。

另一方面,如果一个新文档应该包含(继承)“模板”中的内容,例如“模板”Documents.Add 中存在的宏、功能区 UI 或键盘快捷键,则需要与文档(doc、docx、docm)文件一起用作模板。

【讨论】:

  • 感谢您简洁明了的解释。看起来 Add 是我应该使用的,因为 VBA 加载了一个包含然后填充的字段的 Docx。我确实遇到的一个问题是,当我将 VBA 更改为添加时,每次 Word 启动时,它都会默认为“Web 视图”模式。任何关于如何避免这种情况的建议都可以恢复到 Open 来解决这个问题。
  • @Joe 这应该作为一个单独的问题发布(尤其是在原始问题中没有提及)。 FWIW 虽然 Word 倾向于尊重关闭它的设置。但是输入一行代码将视图更改为您想要的视图应该没有问题。由于您是该网站的新手:通常点击回答您问题的任何贡献旁边的复选标记。
猜你喜欢
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多