VBA宏,用于检查在拼写错误的单词之前、之后添加单词以进行建议的更正



用例:我正在使用语音听写软件为自己做笔记,并将其粘贴到MS Word中。这个软件做得不错,但把一些单词弄乱了,导致了很多拼写错误。其中第一类基本上是同音异义词,主要是技术术语。我构建了一个很好的VBA宏,它使用查找和替换,从电子表格中提取同音词和所需的更正。效果很好。类别2更难解决,并且主要由拼写错误组成,这是由于软件将随机空格插入到拼写正确的单词中。我没有看到明确的模式,就像总是在音节中断或双字母之间一样,但它经常发生在一个或多个音节是一个拼写正确的单词,而另一个音节被切断的情况下,而这个音节本身并不是一个有效的单词。例如,转录"猫的自我"与"类别"。正确的片段可以是前半部分或后半部分。

代码需要:

  • 在ActiveDocument范围上运行拼写检查
  • 查找下一个拼写错误
  • 看前面的单词,检查它的拼写加上拼写错误的单词,如果拼写正确,接受
  • 否则,看后面的单词,检查拼写是否正确,再加上拼写错误的单词,如果拼写正确,接受
  • 继续到下一个错误

结果如下:

更正由于spacing导致的拼写错误的编码->编码以纠正由于间距引起的拼写错误

我知道如何调用拼写检查、循环浏览范围、获得拼写建议等,但我很难识别上一个和下一个单词,然后在原始拼写检查会话中再次运行拼写检查。

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

最新更新