gpt4 book ai didi

ms-word - 仅使用分隔字段名称的原始 MailMerge

转载 作者:行者123 更新时间:2023-12-02 13:53:36 27 4
gpt4 key购买 nike

显然,我们的应用程序基于模板生成 Word 文档的正确方法是鼓励管理员用户(负责管理模板)在模板文档中嵌入正确的合并字段或书签。

但是,在过去,我们发现我们的典型管理员用户通常不使用 MailMerge 或 Word 中的任何其他“高级”功能,但由于必须使用合并字段而被严重推迟。我们尝试过为他们做这件事,制作文档、大量屏幕截图等。但这对他们来说都是“繁琐的”。

他们有几十个模板(都只是不同种类的非常简单的字母),并且希望频繁地修改它们。

他们真正想要的是能够使用简单的分隔符(例如大括号)来标记字段,这可以有效地将自制的合并字段标记到我们的应用程序(尽管 Word 没有意识到它的重要性),如下所示:

Dear {CustomerSurname}

然后我们可以用几行代码来选取字段,如下所示:

w = New Word.Application
d = w.Documents.Open(...)
Dim mergedContent As String = d.Content.Text
mergedContent = mergedContent.Replace("{CustomerSurname}", Customer.Surname)
mergedContent = mergedContent.Replace("{CustomerPostcode}", Customer.Postcode)
d.Content.Text = mergedContent

这感觉很粗糙,但非常简单(对于最终用户而言)。

还有人走过这条路吗?有什么问题吗?我们建议他们不要在文档的普通文本中的其他位置使用“{”和“}”字符,但这并不是真正的重大限制。

速度?将合并字段包裹在两行中?还有其他问题吗?

最佳答案

这是我用来查找和替换的代码的一部分。我首先尝试了你的代码,但没有成功。这是基于您录制宏时 Word 生成的 VBA 代码。

range = document.Range()

With range.Find
.Text = "{" & name & "}"
.Replacement.Text = NewValueHere
.Forward = True
.Wrap = Word.WdFindWrap.wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
range.Find.Execute(Replace:=Word.WdReplace.wdReplaceAll)

我使用此代码是因为文档需要与 Office 二进制文件格式兼容。如果您可以使用 Office 2007 格式,则无需安装 Word。只需解压缩文档,找到 word\document.xml 文件,执行 String.Replace("[OldValue]", "New value"),保存文件并将其压缩回一个包 ( docx 文件)。我在这里显示的代码非常慢,因为我正在自动化 Word。在我的电脑上,打开 Word、编辑 2 个包含 6 个字段的文档并关闭应用程序需要 4 秒。

关于ms-word - 仅使用分隔字段名称的原始 MailMerge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1554532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com