VBA 用于检查拼写错误单词前后添加单词的宏,以提供更正建议
VBA Macro to check addition of word before, after with misspelled word for a suggested correction
用例:我正在使用语音听写软件给自己做笔记,然后粘贴到 MS-Word 中。该软件做得不错,但会破坏一些单词,导致大量拼写错误。其中第 1 类基本上是同音异义词,主要是技术术语。我构建了一个很好的 VBA 宏,它使用查找和替换,从电子表格中提取同音异义词和所需的更正。效果很好。第 2 类更难解决,主要包含由于软件将随机空格插入到其他拼写正确的单词中而导致的拼写错误。我没有看到明确的模式,就像总是在音节中断或双字母之间一样,但它经常发生在一个或多个音节是一个正确拼写的单词的地方,而另一个音节被切断,单独的那个部分不是一个有效的单词。例如转录“类别”与“类别”。正确的曲子可以是上半场也可以是下半场。
代码需要:
- 运行 对 ActiveDocument 范围进行拼写检查
- 找出下一个拼写错误
- 查看前面的单词,检查拼写加上错拼的单词,如果拼写正确,接受
- else 看后面的单词,检查它的拼写加上拼错的单词,如果拼写正确,接受
- 继续下一个错误
结果会是这样的:
编码以更正由于空格引起的拼写错误 ->
编码以纠正由于间距引起的拼写错误
我知道如何调用拼写检查、循环遍历范围、获取拼写建议等,但我正在努力寻找如何识别前一个和下一个单词,然后 运行 在原始拼写检查会话。
Sub SpellCheck()
Dim Rng As Range, oSuggestions As Variant
For Each Rng In ActiveDocument.Range.SpellingErrors
With Rng
If .GetSpellingSuggestions.Count > 0 Then
' TBD
End If
End With
Next
End Sub
有什么建议吗?我愿意接受一定程度的误报或必须手动更正的单词。只是修复上述代表性示例的东西将是巨大的。非常感谢!
也许:
Sub SpellCheck()
Dim Rng As Range, oSuggestions As Variant
For Each Rng In ActiveDocument.Range.SpellingErrors
With Rng
If .Characters.First.Previous = " " Then
.Characters.First.Previous.Delete
.Start = .Words.First.Start
If .SpellingErrors.Count > 0 Then
ActiveDocument.Undo
If .Characters.Last.Next = " " Then
.Characters.Last.Next.Delete
.End = .Words.Last.End
If .SpellingErrors.Count > 0 Then ActiveDocument.Undo
End If
End If
End If
End With
Next
End Sub
用例:我正在使用语音听写软件给自己做笔记,然后粘贴到 MS-Word 中。该软件做得不错,但会破坏一些单词,导致大量拼写错误。其中第 1 类基本上是同音异义词,主要是技术术语。我构建了一个很好的 VBA 宏,它使用查找和替换,从电子表格中提取同音异义词和所需的更正。效果很好。第 2 类更难解决,主要包含由于软件将随机空格插入到其他拼写正确的单词中而导致的拼写错误。我没有看到明确的模式,就像总是在音节中断或双字母之间一样,但它经常发生在一个或多个音节是一个正确拼写的单词的地方,而另一个音节被切断,单独的那个部分不是一个有效的单词。例如转录“类别”与“类别”。正确的曲子可以是上半场也可以是下半场。
代码需要:
- 运行 对 ActiveDocument 范围进行拼写检查
- 找出下一个拼写错误
- 查看前面的单词,检查拼写加上错拼的单词,如果拼写正确,接受
- else 看后面的单词,检查它的拼写加上拼错的单词,如果拼写正确,接受
- 继续下一个错误
结果会是这样的:
编码以更正由于空格引起的拼写错误 -> 编码以纠正由于间距引起的拼写错误
我知道如何调用拼写检查、循环遍历范围、获取拼写建议等,但我正在努力寻找如何识别前一个和下一个单词,然后 运行 在原始拼写检查会话。
Sub SpellCheck()
Dim Rng As Range, oSuggestions As Variant
For Each Rng In ActiveDocument.Range.SpellingErrors
With Rng
If .GetSpellingSuggestions.Count > 0 Then
' TBD
End If
End With
Next
End Sub
有什么建议吗?我愿意接受一定程度的误报或必须手动更正的单词。只是修复上述代表性示例的东西将是巨大的。非常感谢!
也许:
Sub SpellCheck()
Dim Rng As Range, oSuggestions As Variant
For Each Rng In ActiveDocument.Range.SpellingErrors
With Rng
If .Characters.First.Previous = " " Then
.Characters.First.Previous.Delete
.Start = .Words.First.Start
If .SpellingErrors.Count > 0 Then
ActiveDocument.Undo
If .Characters.Last.Next = " " Then
.Characters.Last.Next.Delete
.End = .Words.Last.End
If .SpellingErrors.Count > 0 Then ActiveDocument.Undo
End If
End If
End If
End With
Next
End Sub