MS Word自动化:无法为拼写检查启用红色下划线

时间:2013-06-24 12:50:33

标签: c# vba automation ms-word word-vba

我的代码需要在MS Word 2010中启用拼写检查,以便用户可以在拼写错误下看到红色下划线。

在当前版本中,我尝试执行此操作以启用拼写检查:

wordApplication.Options.CheckSpellingAsYouType = true;
wordApplication.Options.SuggestSpellingCorrections = true;
wordApplication.ActiveDocument.ShowSpellingErrors = true;
wordApplication.ActiveDocument.CheckSpelling();

我打开Word并输入“Test texxt string”。在此之后我运行我的代码但没有任何反应: No underlines under texxt word

我在“texxt”下看不到任何下划线。如果我转到选项,我会看到“键入时检查拼写”选项已启用: enter image description here

现在,如果我检查这个属性:

wordApplication.ActiveDocument.SpellingErrors[0].Text

它将包含“texxt”,这意味着实际上已经检查了拼写。

此外,如果我只是重新启动MS Word并输入相同的文本 - 红色下划线变为可见: enter image description here

我还尝试调用Application.ScreenRefresh并设置ScreenUpdating属性,但这没有产生任何影响。

注意:当文档中没有文本时,我会在开头运行此代码/宏。如果有一些文字 - 它有效。

注2:要重现的确切步骤:

  1. 启动MS Word。转到选项并禁用“在键入时检查拼写”。重新启动Word。

  2. 启动Word并运行以下宏:

    Options.CheckSpellingAsYouType = true
    Options.SuggestSpellingCorrections = true
    ActiveDocument.ShowSpellingErrors = true
    
  3. 键入以下文本:“测试texxt字符串。”。按Enter键。

  4. 运行以下宏

    MsgBox ActiveDocument.SpellingErrors(1).Text

  5. 您将在MessageBox中看到“texxt”但不是红色下划线

2 个答案:

答案 0 :(得分:3)

偶然发现以下解决方案:如果在用户输入某些文本后,我会调用以下代码下划线:

int iDummy = wordDocument.wordApp.ActiveDocument.SpellingErrors.Count;

答案 1 :(得分:1)

由于低代表,我无法对Oleg的答案发表评论,但值得注意的是, Word 2013 ,使用{{ 1}}方法似乎因某些不可理喻的原因而删除了当前的选择,这可能会有问题。

通过仅在当前未选择任何文本时检查Application.ActiveDocument.SpellingErrors.Count来隐藏此效果的黑客攻击; e.g:

Count