2

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

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

Sub spellcheck()


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

    Cells.CheckSpelling

End Sub

任何帮助表示赞赏。请我理解自动更正的危险。错误更正的影响很小。

谢谢,史蒂夫

4

3 回答 3

4

第三方拼写检查器,例如aspell ,可能会为您提供最快的速度和灵活性。但显然,您可以控制 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

嗯,早餐……

于 2013-01-28T12:06:00.807 回答
1

假设您在 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)
    文德
结束子
于 2013-01-28T08:22:20.240 回答
1

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

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  

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

于 2014-09-23T15:03:01.173 回答