用例:我正在使用语音听写软件为自己做笔记,并将其粘贴到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