Rich Asked: 2021-07-01 06:03:52 +0800 CST2021-07-01 06:03:52 +0800 CST 2021-07-01 06:03:52 +0800 CST 如何在word文档中放置变量 772 我有一个重复使用的 word 文档,但需要更改一个在文档中出现多次的短语。有没有办法让这个短语成为一个变量并更新一次,而不是每次都搜索文档来更新它? microsoft-word microsoft-word-2013 2 个回答 Voted Yorik 2021-07-01T07:12:25+08:002021-07-01T07:12:25+08:00 所以一种方法是在文档中使用易于识别的文本“放置变量”并将文档保存为模板。然后使用查找和替换来查找“变量”并替换为短语。 我通常会做类似{BOOKMARK_PHRASE_ONE}短语通常会出现的地方。使用“全部替换”的查找和替换操作一举完成。 对于复杂的业务文档,我会使用可以处理这些事情的宏(再次保存在模板文件中),然后在宏中调用一个函数来替换多个事情。我不能在这里发布整个过程,但我所做的是设计 VBA 表单来收集我需要的信息,然后使用一个包含在可以重复调用的函数中的查找和替换过程。 基本上:您获取文档,在一个或多个位置键入{BOOKMARK_PHRASE_ONE},设置一个宏来完成繁重的工作,然后将其保存为模板。随后打开模板文件作为副本打开,然后运行设置文本的宏。副本保存为普通文档,当您需要修改业务流程(样板文本、VBA 等)时,您再次“另存为模板”。 VBA 可能大致如下所示: Const txtFind_PHRASE_ONE = "{BOOKMARK_PHRASE_ONE}" Const txtReplace_PHRASE_ONE = "This would be phrase one." Const txtFind_PHRASE_TWO = "{BOOKMARK_PHRASE_TWO}" Const txtReplace_PHRASE_TWO = "This would be phrase two." sub replacePhrases() replacePhrase txtFind_PHRASE_ONE, txtReplace_PHRASE_ONE replacePhrase txtFind_PHRASE_TWO, txtReplace_PHRASE_TWO end sub Private sub replacePhrase(txtFind as string, txtReplace as string) With Selection.Find .Text = txtFind .Replacement.Text = txtReplace .Forward = True .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll end sub 顶部短语的const声明通常是我使用表格填写的变量。Sub 命名replacePhrases将在“宏”对话框中可见,并且将是我将运行以启动该过程的宏。Sub 命名replacePhrase被标记为私有,因此它不会显示在宏对话框中;您将成对的 find + replace 文本传递给它。 Best Answer Charles Kenyon 2021-07-01T09:19:33+08:002021-07-01T09:19:33+08:00 我希望您想使用Mapped Content Controls。 有一组这些被错误标记为Document Properties在. 这些是映射内容控件,主要对应于高级文档属性。这是我关于插入和使用这些的页面。这不是做你想做的事情的唯一方法,但在 .docx 格式的文档中是最有效的。Quick PartsInsert tab Greg Maxey 的页面重复数据中给出了这种和其他复制数据的方法。这是 David Postill 在他的评论中链接的页面。然而,与其他方法不同,映射内容控件只需要在一个地方进行更改,以便在整个文档中复制该更改。 可以映射任何通用内容控件,但文档属性列表中的内容控件是纯文本,日期选择器除外。 将其中一个插入文档后,可以更改其名称和提示,然后可以将其复制到文档中您想要信息的其他位置。 请注意,这些是设置的,因此对文档中任何位置的控件所做的更改都会更改所有副本中的信息。其他复制数据的方法需要更多地关注更新副本,就像更新字段一样。 内容控件在 Windows 版本中最容易创建/修改。在 Mac 上,它们更难设置,但可以完成。您可以从 Windows 创建的文档中复制它们或使用 vba 创建它们。这是 Word MVP John Korchok关于如何在 Mac 上执行这些操作的页面。
所以一种方法是在文档中使用易于识别的文本“放置变量”并将文档保存为模板。然后使用查找和替换来查找“变量”并替换为短语。
我通常会做类似
{BOOKMARK_PHRASE_ONE}
短语通常会出现的地方。使用“全部替换”的查找和替换操作一举完成。对于复杂的业务文档,我会使用可以处理这些事情的宏(再次保存在模板文件中),然后在宏中调用一个函数来替换多个事情。我不能在这里发布整个过程,但我所做的是设计 VBA 表单来收集我需要的信息,然后使用一个包含在可以重复调用的函数中的查找和替换过程。
基本上:您获取文档,在一个或多个位置键入
{BOOKMARK_PHRASE_ONE}
,设置一个宏来完成繁重的工作,然后将其保存为模板。随后打开模板文件作为副本打开,然后运行设置文本的宏。副本保存为普通文档,当您需要修改业务流程(样板文本、VBA 等)时,您再次“另存为模板”。VBA 可能大致如下所示:
顶部短语的
const
声明通常是我使用表格填写的变量。Sub 命名replacePhrases
将在“宏”对话框中可见,并且将是我将运行以启动该过程的宏。Sub 命名replacePhrase
被标记为私有,因此它不会显示在宏对话框中;您将成对的 find + replace 文本传递给它。我希望您想使用Mapped Content Controls。
有一组这些被错误标记为
Document Properties
在. 这些是映射内容控件,主要对应于高级文档属性。这是我关于插入和使用这些的页面。这不是做你想做的事情的唯一方法,但在 .docx 格式的文档中是最有效的。Quick Parts
Insert tab
Greg Maxey 的页面重复数据中给出了这种和其他复制数据的方法。这是 David Postill 在他的评论中链接的页面。然而,与其他方法不同,映射内容控件只需要在一个地方进行更改,以便在整个文档中复制该更改。
可以映射任何通用内容控件,但文档属性列表中的内容控件是纯文本,日期选择器除外。
将其中一个插入文档后,可以更改其名称和提示,然后可以将其复制到文档中您想要信息的其他位置。
请注意,这些是设置的,因此对文档中任何位置的控件所做的更改都会更改所有副本中的信息。其他复制数据的方法需要更多地关注更新副本,就像更新字段一样。
内容控件在 Windows 版本中最容易创建/修改。在 Mac 上,它们更难设置,但可以完成。您可以从 Windows 创建的文档中复制它们或使用 vba 创建它们。这是 Word MVP John Korchok关于如何在 Mac 上执行这些操作的页面。