【问题标题】:Remove bold formatting from chars in Word从 Word 中的字符中删除粗体格式
【发布时间】:2021-04-07 15:12:15
【问题描述】:

我使用以下代码来删除格式。不知何故,它不起作用。

Sub rep_test()
Dim TempS As String

TempS = Replace_chars("]", "]")
End Sub

Function Replace_chars(search_txt As String, replace_txt As String)

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
       
        .Text = search_txt
        .Replacement.Text = replace_txt
        .Replacement.Font.Bold = False
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll, Format:=False

End Function

文本示例:
Aaa [BBB] CC [DDD]

知道为什么吗?

【问题讨论】:

    标签: vba ms-word formatting format


    【解决方案1】:

    试试:

    Sub rep_test()
    Call Replace_chars("]")
    End Sub
    
    Sub Replace_chars(search_txt As String)
    Application.ScreenUpdating = False
    With ActiveDocument.Range
      With .Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = search_txt
        .Replacement.Text = "^&"
        .Font.Bold = True
        .Replacement.Font.Bold = False
        .Format = True
        .Forward = True
        .MatchWildcards = False
        .Wrap = wdFindContinue
        .Execute Replace:=wdReplaceAll
      End With
    End With
    Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 不工作...没有对文本进行任何更改
    • 为我工作...也许您没有正确指定要更改的文本和/或您的要求。
    【解决方案2】:

    如果要删除格式,正确的方法是应用字符样式“默认段落字体”。这将重置格式以匹配基础段落样式。它还有一个优点是您不需要知道需要删除/应用什么格式。

    Sub FindAndResetFormatting(search_txt As String)
       With ActiveDocument.Content.Find
          .ClearFormatting
          .Replacement.ClearFormatting
          .Text = search_txt
          .Replacement.Style = ActiveDocument.Styles(wdStyleDefaultParagraphFont)
          .Forward = True
          .Wrap = wdFindStop
          .Format = True
          .Execute Replace:=wdReplaceAll
       End With
    End Sub
    

    【讨论】:

    • 这将比删除特定字符的粗体格式做更多的事情 - 这是所有 OP 的线程标题和代码表明他正在努力实现。
    • @macropod - 我正在回复问题的文本。 >
    猜你喜欢
    • 2015-01-30
    • 2014-03-01
    • 2020-02-13
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多