【问题标题】:Automatically Replace Misspellings with Suggestions for long lists of terms自动将拼写错误替换为长术语列表的建议
【发布时间】:2014-09-24 13:49:49
【问题描述】:

我有一长串术语。超过 90% 是拼写错误。其中大部分是中间没有空格的两个词。我注意到 MS Word、Excel、Office 等非常擅长建议正确的拼写。当我运行拼写检查器时,我没有时间确认每一个建议的更正。有一些错误是可以的。

如何在没有提示的情况下自动进行拼写检查,或者更确切地说“拼写正确”?我不介意使用除 Microsoft 之外的其他工具,但它的拼写检查器似乎相当不错。我尝试了一些与 Excel 一起使用的 VBA 代码,但我找不到任何可以以编程方式向我显示主要建议的内容,以便我可以替换拼写错误的术语。

Sub spellcheck()


    With Application.SpellingOptions
        .SuggestMainOnly = True
        .IgnoreCaps = True
        .
    End With

    Cells.CheckSpelling

End Sub

感谢任何帮助。请我理解自动更正的危险。错误更正的影响微乎其微。

谢谢, 史蒂夫

【问题讨论】:

  • 这不一定是 VBA,如果有人有完全不同的解决方案,我会全力以赴。

标签: vba excel


【解决方案1】:

第三方拼写检查器,例如 aspell 可能会为您提供最快的速度和灵活性。但显然,您可以control the spell checker of Access,所以这可能是一种可能性。

鉴于您的特殊情况是由于两个单词之间缺少空格而导致的错误,您可能可以使用 Excel 的拼写检查器:

Sub test()
    Dim str, correction As String
    Dim i As Long, n As Long

    With Application
    For Each str In Array("pancake", "sausagebiscuit", "oatmeal", "largecoffee")
      correction = str ' by default leave alone
      If .CheckSpelling(str) Then
        ' already a word
      Else
        n = Len(str)
        For i = 1 To n
          If .CheckSpelling(Left$(str, i)) And .CheckSpelling(Right$(str, n - i)) Then
            correction = Left$(str, i) & " " & Right$(str, n - i)
          End If
        Next
      End If
      Debug.Print str & " -> " & correction
    Next
    End With
End Sub

输出:

pancake -> pancake
sausagebiscuit -> sausage biscuit
oatmeal -> oatmeal
largecoffee -> large coffee

嗯,早餐……

【讨论】:

  • @A.Webb +1 不错,CheckSpelling 完美命中。
  • 嗨 A.Webb 我一直在处理类似的情况,请您检查这个问题并帮助我......!
【解决方案2】:

假设您在 A 列(从第 1 行开始)中有一个拼写错误的单词列表,并且在 B 列中有更正,您可以使用此宏将它们添加到 Office 的自动更正库中。这样,Excel 将在输入单词后立即将其替换为更正。

子 subAddAutoCorrects() 调暗为范围 设置 rng = Sheets("Sheet1").Range("A1") 虽然 rng "" Application.AutoCorrect.AddReplacement 什么:=rng.Value,替换:=rng.Offset(, 1).Value 设置 rng = rng.Offset(1) 文德 结束子

【讨论】:

  • 彼得,非常感谢您的回复。但是,我没有对拼写错误的更正。我希望自动使用 Office 的最佳建议。听起来很危险,是的。但我的大部分条目基本上都是两个单词,中间没有空格。所以我玩了一下你的代码,但仍然无法访问建议列表来实际替换拼写错误。
  • 啊,我明白了 - 我误读了你的问题。 :-( 不幸的是,我不知道解决方案。:-( 似乎谷歌提供了一个拼写检查 API - 也许你可以找到一个 VBA 库来使用它......祝你好运!
【解决方案3】:

已经一年多了,但也许你仍然需要解决问题的方法。
试试这个(以毫秒为单位):

Sub use_suggestion()  
Dim rng As Range  
Dim i As Long  

For i = 1 To ActiveDocument.Range.SpellingErrors.Count  
Set rng = ActiveDocument.Range.SpellingErrors(i)  

If rng.GetSpellingSuggestions.Count <> 0 Then  
rng = rng.GetSpellingSuggestions.Item(1).Name & "ZXQ"  
End If  

Next i  

Selection.HomeKey Unit:=wdStory  
Selection.Find.ClearFormatting  
Selection.Find.Replacement.ClearFormatting  

   With Selection.Find  
     .Text = "ZXQ"  
     .Replacement.Text = ""  
     .Forward = True  
     .Wrap = wdFindContinue  

   End With  

   Selection.Find.Execute Replace:=wdReplaceAll  
End Sub  

注意:没有建议的拼错单词不会改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-07
    • 2019-04-16
    • 2013-10-18
    • 1970-01-01
    • 2012-11-12
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多