Ms word 如何在Microsoft Word中搜索和替换涉及的字段?

Ms word 如何在Microsoft Word中搜索和替换涉及的字段?,ms-word,fieldcodes,Ms Word,Fieldcodes,我有一个Word文档,其中包含引用类型的字段,以“[field].[field]”的形式出现——换句话说,两个字段之间有一个句点。我想用一个空格来全局替换它 Word提供了^d特殊字符来搜索字段,但由于某些原因,查询“^d.^d”找不到任何内容。但是,“^d”可以。然而,现在问题来了——为了保留字段代码,我应该指定什么作为替换文本?如果使用正则表达式,我可以使用诸如\1之类的“查找表达式”,但对于regexp(“通配符”)模式,不允许使用^d 我想我可以写一个宏…Torzaburo, 我建议您使

我有一个Word文档,其中包含引用类型的字段,以“[field].[field]”的形式出现——换句话说,两个字段之间有一个句点。我想用一个空格来全局替换它

Word提供了^d特殊字符来搜索字段,但由于某些原因,查询“^d.^d”找不到任何内容。但是,“^d”可以。然而,现在问题来了——为了保留字段代码,我应该指定什么作为替换文本?如果使用正则表达式,我可以使用诸如\1之类的“查找表达式”,但对于regexp(“通配符”)模式,不允许使用^d

我想我可以写一个宏…

Torzaburo, 我建议您使用宏来执行此操作。您可以先录制宏,然后在宏中细化处理步骤

首先,通过导航到主页>段落>切换显示/隐藏段落符号来打开隐藏字符。此外,选择“全部”并打开字段代码(右键单击并选择“切换字段代码”)

除已打开的空白Word文档外,再打开一个新的空白Word文档。稍后您将使用该文档。开始宏录制,并按您所说的使用“^d”(字段代码)查找字段

找到字段后,仅复制括号内的字段文本,而不复制完整的字段引用。在宏仍在录制时,将ALT+TAB粘贴到新的空白文档中,并将字段代码作为纯文本粘贴到中

此时,对字段代码执行必要的查找和替换处理。突出显示已处理的字段代码,将ALT+TAB复制回原始文档,并粘贴回{}括号之间

停止宏录制。向宏VBA添加任何进一步的自定义处理


选择全部并重新切换字段代码。更新字段代码。

通常在查找字段时最好使用宏路径,因为正如您所说,Word使用的查找算法与您希望的字段查找算法不一样

但是,如果您确切地知道字段包含什么,您可以指定一个可能会工作的搜索模式(但不是在通配符模式下)

例如,如果要查找地物编号字段对,例如

{ STYLEREF 1 \s }.{ SEQ Figure \* ARABIC \s 1 }
(通常是文档中所有位置的同一组字段)

如果您真的只需要查找以下内容:

{ STYLEREF 1 \s }.<any field>

如果需要更精确,还可以拼写第二个字段

“^d”仅用于查找字段开头,而不用于查找字段结尾

很遗憾,^w希望找到至少一个空白字符,否则它将更健壮

^19^wSTYLEREF^w1^w\s^w^21.^19

也许其他人知道如何在不使用通配符的情况下解决此问题?

您不需要宏。只需使用Alt+F9打开所有字段代码。然后查找并替换您要更改的内容。完成替换后,再次使用Alt+F9关闭字段代码。

我想添加到Bibadia的解决方案中

索引项字段的示例;我们想更改拼写错误的名称

  • 确保显示隐藏格式(使用SHIFT+CTRL+F8切换)
  • 确保未选择通配符选项。若要搜索字段,请使用开头和结尾字段大括号代码(根据Bibadia的建议,可以选择使用^w作为空格):^19 XE“Deo,John”^21

  • 替换将无法识别字段大括号字符,但允许插入剪贴板的内容。;)。为此,请在文本中插入正确的条目。按CTRL+F9键插入字段并键入:XE“Doe,John”

  • XE "Doe, John"
  • 选择上面的字段并复制

  • 在“替换”框中使用^c

  • 点击全部替换


塔达

这件事来晚了,对贝丝来说可能太晚了(对不起,贝丝)。这可能不是Beth想要的。但对任何感兴趣的人来说

听起来Beth可能在整个文档中使用
INSERT CAPTION
(因此存在字段代码)创建了标题。这意味着这些标题将以标题样式(自动)创建

要将此类标题中的分隔符“.”全局替换为“”(空格),请执行两个步骤:

[1] 转到
REFERENCES |插入标题
,然后单击
编号
,并用“EM-DASH”替换
分隔符
”。这将替换
标题
窗口中选定标签标题中的所有分隔符。如果文档中使用了其他标签(如图),请逐个选择其他标签并重复此过程

[2] 查找/替换搜索样式标题中的特殊字符“em dash”(^+)并替换为“”。单击“全部替换”

注意:这假定em-dash不会出现在标题文本的任何地方。如果是这样的话,那么您需要在前后进行“小提琴”操作,以确保上面的全局替换不会触及这些em破折号


“pre-fiddle”是跨字幕进行全局查找/替换,将em破折号(^+)替换为任何字幕文本中都不会出现的其他字符串(例如“em-dash”)。然后按照上述步骤更改分隔符。最后,“后期处理”是通过将字符串“em-DASH”全局替换为实际的em-DASH字符“^+”,来恢复字幕中的em-DASH

免责声明:我不是这个解决方案的创始人,但它干净优雅,我认为应该包括在这里:

(改编自):

  • 创建或查找要将文本转换为的字段的单个实例
  • 切换字段代码可见(AltF9)
  • 将要使用的字段的代码复制到剪贴板(高亮显示和CtrlC)
  • 打开“替换”对话框(CtrlH),在“查找内容”框中插入要替换的文本,然后在
    ^19^wSTYLEREF^w1^w\s^w^21.^19
    
    ^19 XE "Deo, John" ^21 XE "Doe, John" ^c