【问题标题】:How to do search and replace involving fields in Microsoft Word?如何在 Microsoft Word 中搜索和替换涉及的字段?
【发布时间】:2016-12-03 03:40:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: ms-word fieldcodes


    【解决方案1】:

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

    索引条目字段的示例;我们想更改拼错的名称。

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

      ^19 XE "Deo, John" ^21
    • 替换不会识别字段大括号字符,但会允许插入剪贴板的内容。 ;)。为此,请在文本中插入正确的条目。 CTRL+F9 插入字段并输入:

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

    • 使用

      ^c
      在替换框中
    • 点击全部替换

    哒哒!

    【讨论】:

      【解决方案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
      

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

      【讨论】:

        【解决方案3】:

        托扎布罗, 我建议您使用宏来执行此操作。您可以从录制宏开始,然后在宏中细化您的处理步骤。

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

        除了您打开的文档之外,还打开一个新的空白 Word 文档。稍后您将使用它。开始宏录制,如你所说,使用“^d”(域代码)查找域。

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

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

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

        全选并重新切换域代码。更新域代码。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            免责声明:这个解决方案不是我原创的,但它干净优雅,我认为它应该包含在此处:

            (改编自Search & Replace Field Codes in Word):

            1. 创建或查找要转换文本的字段的单个实例
            2. 切换域代码可见 (AltF9)
            3. 将要使用的字段的代码复制到剪贴板(突出显示和 CtrlC
            4. 打开替换对话框(CtrlH),在查找内容框中插入要替换的文本,然后输入@ 替换为框中的 987654322@。

            这会将您的文本替换为剪贴板的内容,将其转换为您在第 3 步中复制的域代码。它还会复制格式信息(字体、颜色等),以控制隐藏时该域的显示方式. (警告:我仅在 Windows 7 下使用 Word 2003 对此进行了测试。)

            【讨论】:

              【解决方案6】:

              这件事迟到了,对 Beth 来说可能为时已晚(对不起 Beth)。这可能不是贝丝想要的。但是对于任何有兴趣的人......

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

              全局替换分隔符“.”在此类标题中带有“”(空格),请采取两个步骤:

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

              [2] 对 CAPTION 样式中的特殊字符“em-dash”(^+) 进行查找/替换搜索,替换为“”。点击REPLACE ALL

              瞧!

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

              “pre-fiddle”是在字幕中进行全局查找/替换,将 em-dash ("^+") 替换为其他从未出现过的字符串(例如 "EM-DASH")任何字幕的文字。然后,您按照上述方法更改分隔符。最后,“后小提琴”是通过将字符串“EM-DASH”全局替换为实际的 em-dash 字符“^+”来恢复字幕中的 em-dash。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-01-14
                • 2013-01-17
                • 1970-01-01
                • 2017-10-20
                • 2023-03-14
                • 1970-01-01
                相关资源
                最近更新 更多