如何以编程方式使用Microsoft Word的拼写/语法检查器?

8 投票
1 回答
5244 浏览
提问于 2025-04-15 15:30

我想处理一些中等到大量的文本片段,使用拼写和语法检查器来大致评估和排名它们的“质量”。速度不是特别重要,所以我觉得最简单的方法就是写一个脚本,把这些片段交给微软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中手动检查时的结果是一样的。

撰写回答