Word 2013搜索&替换为通配符

时间:2015-10-21 16:09:26

标签: search replace ms-word latex wildcard

我正在开发一个项目,我必须将Word文档转换为latex。我现在遇到的一个问题是,例如我想用文本段落和对应的latex命令替换所有斜体文本段落。所以看起来如下:

搜索: &LT * GT;

替换: \\ textit {*}

示例:

test - > \\ textit {测试}

现在这个命令存在一些问题。首先< *> olny寻找单词,但我想找到全文的段落。我还没有发现如何做到这一点。在替换行中,Word总是抱怨\字符的用法。我只是不能把它放在那里。我已经读过你需要使用它来排除通配符,所以我使用了其中两个,但这不起作用。正如你所看到的,我也希望在它之间使用斜体文本 两个括号,但在这里Word不承认*作为通配符。

这是我第一次使用通配符,所以我真的不知道。我已经搜索了很多(这导致我到这个网站顺便说一句),但我不能帮助自己。

2 个答案:

答案 0 :(得分:1)

在多次对您的问题进行分类后,我终于相信我明白了您的要求,答案是您无法单独使用“查找/替换”。

可以使用格式/字体查找格式为斜体的所有连续文本范围,并选择斜体。这可以在没有通配符的情况下完成,它将使用此格式选择所有连续文本(多个单词)。

你的问题出现在你想要放置东西的地方"周围"你发现了什么。只有在搜索特定术语时才可以这样做。只要您使用*等占位符,您只能替换找到的内容 - 它就无法重复使用。所以此时需要宏代码。

以下示例搜索斜体,然后查找停止。然后在找到的范围内插入之前和之后的代码,重置搜索范围并循环操作,直到找不到斜体的实例。

Sub FindReplaceLatex()
    Dim rngSearch As word.Range
    Dim rngFound As word.Range
    Dim sBefore As String, sAfter As String
    Dim bFound As Boolean

    sBefore = "\\textit{"
    sAfter = "}"
    Set rngSearch = ActiveDocument.content
    rngSearch.Find.ClearFormatting
    rngSearch.Find.Font.Italic = True
    Do
        bFound = rngSearch.Find.Execute(wrap:=word.wdFindStop, Format:=True)
        If bFound Then
            Set rngFound = rngSearch.Duplicate
            rngSearch.Collapse wdCollapseEnd
            rngSearch.End = ActiveDocument.content.End
            rngSearch.MoveStart wdCharacter, 1
            rngFound.InsertBefore sBefore
            rngFound.InsertAfter sAfter
        End If
    Loop While bFound
End Sub

答案 1 :(得分:0)

您不需要使用通配符或宏。实际上,您甚至不需要指定“查找”文本。您只需要一个普通的查找/替换,在其中您将Font:Italic指定为Find参数,对于替换文本,请使用:\ textit {^&}