【问题标题】:How can I replace bold lines before a pattern with a macro in word?如何用 word 中的宏替换模式前的粗线?
【发布时间】:2020-09-27 05:51:55
【问题描述】:

一位同事问我是否可以写一个单词宏来帮助他们;他们使用一项服务,将几篇报纸文章转储到一个没有任何标题的 word 文件中,并且他们想创建一个 TOC。

我说“绝对不是”,因为我没有任何编写单词宏的经验。但是,我发现通过一些谷歌搜索我可以创建以下内容

Sub CreateHeadings()
Dim oRng As Word.Range
  Set oRng = ActiveDocument.Range
  With oRng.Find
    .Text = "[0-9]@ Wörter"
    .Replacement.Text = ""
    .Replacement.Style = "Heading 2"
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
  Set oRng = ActiveDocument.Range
  With oRng.Find
    .Text = "([0-9])(l[!a-z])"
    .Replacement.Text = "\1^s\2"
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
End Sub

这几乎可以满足我的要求。但是,我需要替换出现在我的搜索模式之前的粗体行,例如

某位作者; “标题”

也许是额外的一行

565 沃尔特

必须用相同的文本替换,但粗体部分被格式化为标题。

有没有简单的方法可以做到这一点?还是我应该先阅读 vba 以完全了解我在这里做什么?

更新:我清理了不需要的部分并尝试采纳 Timothy Rylatt 的有用建议。

Sub CreateHeadings()
Dim oRng As Word.Range
  Set oRng = ActiveDocument.Range
    
    With oRng.Find
      .Font.Bold = True
      .Format = True
    
        With oRng.Find
          .Text = "[0-9]@ Wörter"
        End With
         
      .Replacement.Style = "Heading 2"
      .Execute Replace:=wdReplaceAll
        
          
          
    End With

End Sub

这现在没有任何作用。我希望我能很快理解一些 vba 语法,以便我可以为可能对此类内容感兴趣的其他人更新这篇文章的工作代码。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    你已经差不多了,所以我不会给出完整的答案。

    您已经知道如何使用通配符并替换为特定样式,您所需要的只是如何查找粗体文本。

    With oRng.Find
      .Font.Bold = True
      .Format = True
    

    【讨论】:

    • 我似乎无法找到可以找到示例中概述的模式的嵌套查找。您是否碰巧知道是否可以在 .Text 参数中指定粗体字体,例如 .Text = "(bold)* ([0-9]@ Wörter)" 然后我可以通过 \1 替换第一部分。
    • @JosephDoob - 只能使用我的答案中的参数找到粗体文本。您需要对粗体文本进行单独搜索,因此您需要添加该文本的模式以及要执行的替换操作。
    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多