如何以编程方式使用Microsoft Word的拼写/语法检查器?
我想处理一些中等到大量的文本片段,使用拼写和语法检查器来大致评估和排名它们的“质量”。速度不是特别重要,所以我觉得最简单的方法就是写一个脚本,把这些片段交给微软Word(2007版),让它来检查拼写和语法。
请问有没有办法通过脚本(特别是Python)来实现这个?有没有什么好的资源可以学习如何编程控制Word?
如果没有的话,我想我可以试试一些来自开源语法检查器(SO)的东西。
更新
针对Chris的回答,至少有没有办法做到:a) 打开一个文件(里面包含片段),b) 在Word内部运行一个VBA脚本来调用拼写和语法检查器,c) 返回一些关于片段“得分”的信息?
更新 2
我已经添加了一个看起来有效的答案,但如果有人有其他建议,我会把这个问题保持开放一段时间。
1 个回答
9
经过一番探索,我觉得我找到了一个有用的解决办法。根据这个网站的建议:http://www.nabble.com/Edit-a-Word-document-programmatically-td19974320.html,我正在使用 win32com 模块(如果SourceForge的链接打不开,可以根据这个Stack Overflow的回答,用 pip
来安装这个模块),这个模块可以让我们访问Word的COM对象。下面的代码很好地展示了这一点:
import win32com.client, os
wdDoNotSaveChanges = 0
path = os.path.abspath('snippet.txt')
snippet = 'Jon Skeet lieks ponies. I can haz reputashunz? '
snippet += 'This is a correct sentence.'
file = open(path, 'w')
file.write(snippet)
file.close()
app = win32com.client.gencache.EnsureDispatch('Word.Application')
doc = app.Documents.Open(path)
print "Grammar: %d" % (doc.GrammaticalErrors.Count,)
print "Spelling: %d" % (doc.SpellingErrors.Count,)
app.Quit(wdDoNotSaveChanges)
运行后会得到
Grammar: 2 Spelling: 3
这些结果和在Word中手动检查时的结果是一样的。