如何忽略字符串VBA单词的所有拼写错误?

如何忽略字符串VBA单词的所有拼写错误?,vba,ms-word,Vba,Ms Word,我有几个拼写错误的清单。我正在寻找一种方法来忽略列表中某些单词的所有拼写错误 下面的代码似乎有效,但仅适用于使用样式“Test”格式化的文本 有没有办法通过VBA制作这样的东西 ActiveDocument.String("MyWord").SpellingErrors.IgnoreAll 可以使用Word的Find/Replace功能定位单词并应用noproventing格式。该功能允许搜索字符串并通过Replace应用格式而不影响(删除)搜索词 下面的代码片段说明了这一点。有两种变体:

我有几个拼写错误的清单。我正在寻找一种方法来忽略列表中某些单词的所有拼写错误

下面的代码似乎有效,但仅适用于使用样式“Test”格式化的文本

有没有办法通过VBA制作这样的东西

ActiveDocument.String("MyWord").SpellingErrors.IgnoreAll 

可以使用Word的
Find/Replace
功能定位单词并应用
noproventing
格式。该功能允许搜索字符串并通过
Replace
应用格式而不影响(删除)搜索词

下面的代码片段说明了这一点。有两种变体:

  • 使用“全部替换”一步执行操作

  • 一次搜索和替换一个实例

  • 第一个更快,但在我的测试中,表示拼写错误的“扭曲的红色下划线”并没有从文档中删除。但是,完整的拼写检查会忽略这些术语

    在我的测试中,第二个(注释掉)确实删除了错误格式,但执行速度会较慢

    Sub FindToNoSpellCheck()
        Dim rng As Word.Range
        Dim findText As String
        Dim bFound As Boolean
    
        Set rng = ActiveDocument.content
        findText = "InsertY"
        Do
        With rng.Find
            .ClearFormatting
            .Text = findText
            .Format = True
            .MatchCase = True
            .Replacement.NoProofing = True
            .Replacement.Text = ""
            .Wrap = wdFindStop
            .Execute Replace:=wdReplaceAll
    '        bFound = .Execute()
    '        If bFound Then
    '            rng.NoProofing = True
    '            rng.Collapse wdCollapseEnd
    '        End If
        End With
        Loop While bFound
    End Sub
    

    这里有
    Document.ShowSpellingErrors
    属性,如果您不想让它们出现,可以将其设置为
    False
    。谢谢您的回答。但如果我这样做了,一般来说,我会忽略所有的拼写错误,而不是特定的文本字符串,对吗?非常好的Cindy。非常感谢你的帮助。它对我很管用。正如你所说,红色的弯曲下划线没有被删除,但我注意到,如果我右键点击一个单词,红色下划线就会消失。“这很奇怪。”GerCas我认为原因是视觉界面和应用程序速度的问题。为了优化后者,在第一种情况下,动态拼写检查和屏幕刷新不在后台执行;宏中的操作不会触发它们。
    Sub FindToNoSpellCheck()
        Dim rng As Word.Range
        Dim findText As String
        Dim bFound As Boolean
    
        Set rng = ActiveDocument.content
        findText = "InsertY"
        Do
        With rng.Find
            .ClearFormatting
            .Text = findText
            .Format = True
            .MatchCase = True
            .Replacement.NoProofing = True
            .Replacement.Text = ""
            .Wrap = wdFindStop
            .Execute Replace:=wdReplaceAll
    '        bFound = .Execute()
    '        If bFound Then
    '            rng.NoProofing = True
    '            rng.Collapse wdCollapseEnd
    '        End If
        End With
        Loop While bFound
    End Sub