vba - VBA 宏检查之前添加的单词,之后添加拼写错误的单词以进行建议的更正
问题描述
用例:我正在使用语音听写软件给自己做笔记,然后粘贴到 MS-Word 中。该软件做得不错,但会破坏一些单词,导致很多拼写错误。其中第一类基本上是同音异义词,主要是技术术语。我构建了一个很好的 VBA 宏,它使用查找和替换,从电子表格中提取同音词和所需的更正。效果很好。类别 2 更难解决,并且主要由拼写错误组成,因为软件将随机空格插入到其他拼写正确的单词中。我没有看到明确的模式,就像总是在音节中断或双字母之间一样,但它经常发生在一个或多个音节是一个正确拼写的单词,而另一个音节被切断,并且单独的那个不是一个有效的单词。例如 转录“类别”与“类别”。正确的部分可以是前半部分或后半部分。
代码需要:
- 对 ActiveDocument 范围运行拼写检查
- 查找下一个拼写错误
- 查看前面的单词,检查它的拼写加上拼写错误的单词,如果拼写正确,接受
- 否则看后面的单词,检查它的拼写加上拼错的单词,如果拼写正确,接受
- 继续下一个错误
结果将是这样的:
编码以纠正由于空格引起的拼写错误 -> 编码以纠正由于空格引起的拼写错误
我知道如何调用拼写检查、循环遍历范围、获取拼写建议等,但我正在努力确定如何识别上一个和下一个单词,然后在原始拼写检查会话中再次运行拼写检查。
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
推荐阅读
- c# - 返回 Array 中未出现的最小正整数(大于 0)
- python - 如何计算不同四分位数的百分位数(Var)?
- asp.net - 打印单页 ASp.Net 应用程序中加载的图像会终止当前会话
- sql - 如何使用 TypeORM 在事务中执行多个 QueryBuilder
- c# - WhenAll 用于包含任务的匿名类型
- javascript - 获取功能未按顺序执行 | 不和谐.js
- deployment - Gitlab CI/CD - 如何从一个分支部署多个环境?
- excel - VBA:如何通过名称调用用户窗体对象(循环)
- arcgis-runtime-net - ArcGIS 运行时 WPF 草图编辑器
- android - 不明白这在谷歌游戏商店电子邮件中意味着什么