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

时间:2012-05-23 06:58:16

标签: ms-word fieldcodes

我有一个带有参考品种字段的Word文档,其形式为“[field]。[field]” - 换句话说,两个字段之间有一段时间。我想用空格全局替换它。

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

我想我可以写一个宏...

5 个答案:

答案 0 :(得分:2)

Torzaburo, 我建议你使用宏来做到这一点。您可以从记录宏开始,然后在宏中完善处理步骤。

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

除了您打开的Word文档之外,还要打开一个新的空白Word文档。稍后您将使用它。启动宏录制并使用“^ d”(域代码)查找字段。

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

此时,做必要的发现&将处理替换为域代码。突出显示已处理的域代码,复制,ALT + TAB返回原始文档,然后在{}括号之间粘贴。

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

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

答案 1 :(得分:2)

通常情况下,在查找字段时选择宏路径会更好,因为正如您所说,Word使用的查找算法不会像您希望的那样使用字段。

但是如果您确切知道字段包含的内容,则可以指定可能有效的搜索模式(但不能使用通配符模式)。

例如,如果要查找图号字段对,例如

{ STYLEREF 1 \s }.{ SEQ Figure \* ARABIC \s 1 }

(通常在文档中的每个字段都是相同的字段集)

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

{ STYLEREF 1 \s }.<any field>

您可以确保显示字段代码并搜索

^d STYLEREF 1 \s ^21.^d

^19 STYLEREF 1 \s ^21.^19

如果你需要更精确,你也可以拼出第二个字段。

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

令人遗憾的是^ w想要找到至少1个空白字符,否则它会更健壮地寻找

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

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

答案 2 :(得分:2)

我想补充Bibadia的解决方案。

索引输入字段的示例;我们想要改变我们错误拼写的名字。

  • 确保显示隐藏的格式(使用SHIFT + CTRL + F8切换)。
  • 确保未选中通配符选项。要搜索字段,请使用开始和结束字段括号代码(可选择使用^ w作为空格,如Bibadia建议的那样):

    ^19 XE "Deo, John" ^21

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

    XE "Doe, John"

  • 选择上面的字段并复制

  • 在替换框中使用

    ^c

  • 点击全部替换

钽哒!

答案 3 :(得分:1)

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

答案 4 :(得分:0)

迟到这一点,对于Beth (对不起Beth)来说可能为时已晚。。这可能不是Beth所期待的。但对于任何有兴趣的人......

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

全局替换分隔符&#34;。&#34;用&#34; &#34; (空格)在这样的标题中,采取两个步骤:

[1]转到REFERENCES | INSERT CAPTION,然后点击NUMBERING并替换SEPARATOR&#34;。&#34;使用&#34; EM-DASH&#34;。这将替换CAPTION窗口中所选标签的标题中的所有分隔符。如果您在文档中使用了其他标签(例如图),请逐个选择其他标签并重复此过程。

[2]查找/替换搜索特殊字符&#34; em-dash&#34;样式CAPTION中的(^ +),替换为&#34; &#34 ;.点击REPLACE ALL

瞧!

注意:这假设em-dash没有出现在标题文本中的任何位置。如果确实如此,那么你需要做一个前后的小提琴&#34;确保上面的全局替换不会触及这些em-dashes。

&#34; pre-fiddle&#34;是对字幕进行全局查找/替换,将em-dash(&#34; ^ +&#34;)替换为其他字符串(例如&#34; EM-DASH&#34;)。任何字幕的文字都会出现这种情况。然后,如上所述进行分隔符更改。最后,&#34;后小提琴&#34;是通过全局替换字符串&#34; EM-DASH&#34;来恢复字幕中的em-dashes。使用实际的em-dash字符&#34; ^ +&#34;。