【问题标题】:How to IgnoreAll spelling errors for a string VBA Word?如何忽略字符串 VBA Word 的所有拼写错误?
【发布时间】:2020-01-06 19:11:43
【问题描述】:

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

下面的代码似乎可以工作,但仅适用于样式为“测试”的文本

ActiveDocument.Styles("Test").NoProofing = True

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

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

【问题讨论】:

  • Document.ShowSpellingErrors 属性,如果您不希望它们显示,可以将其设置为False
  • 感谢您的回答。但是,如果我这样做,通常不会忽略特定文本字符串的所有拼写错误,对吧?

标签: vba ms-word


【解决方案1】:

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

以下代码 sn-p 说明了这一点。有两种变体:

  1. 使用全部替换来一步完成操作

  2. 一次搜索和替换一个实例

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

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

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

【讨论】:

  • 优秀的辛迪。非常感谢你的帮助。它对我来说非常好。正如你所说,波浪形的红色下划线没有被删除,但我注意到如果我右键单击一个单词,红色下划线就会消失。很奇怪。
  • @GerCas 我认为原因是视觉界面与应用程序速度的问题。为了优化后者,在第一种情况下,动态拼写检查和屏幕刷新不在后台执行;宏中的操作不会触发它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 2020-07-07
  • 1970-01-01
  • 2011-07-29
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多