代码之家  ›  专栏  ›  技术社区  ›  Andrew Keeton ShuggyCoUk

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

  •  6
  • Andrew Keeton ShuggyCoUk  · 技术社区  · 16 年前

    我想使用拼写/语法检查器处理中到大量的文本片段以获得 它们的“质量”的近似值和排名。速度也不是很重要,所以我认为最简单的方法是编写一个脚本,将代码片段传递给MicrosoftWord(2007),并在其上运行拼写和语法检查程序。

    有没有一种方法可以通过脚本(特别是Python)来实现这一点?学习以编程方式控制Word的好资源是什么?

    如果没有的话,我想我可以试一下 Open Source Grammar Checker (SO) .

    更新

    对于Chris的回答,是否至少有一种方法可以a)打开一个文件(包含代码段),b)从Word内部运行VBA脚本,调用拼写和语法检查器,以及c)返回代码段“分数”的指示?

    更新2

    我添加了一个似乎有效的答案,但如果有人有其他建议,我会将这个问题保留一段时间。

    1 回复  |  直到 9 年前
        1
  •  9
  •   Andrew Keeton ShuggyCoUk    8 年前

    http://www.nabble.com/Edit-a-Word-document-programmatically-td19974320.html win32com this Stack Overflow answer 你可以用 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手动调用检查时匹配结果。