5

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

在当前版本中,我尝试这样做以启用拼写检查:

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

我打开 Word 并输入“测试文本字符串”。在此之后我运行我的代码但没有任何反应: 文本字下没有下划线

我在“文本”下看不到任何下划线。如果我转到选项,我会看到“键入时检查拼写”选项已启用: 在此处输入图像描述

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

wordApplication.ActiveDocument.SpellingErrors[0].Text

它将包含“text”,这意味着实际检查了拼写。

此外,如果我只是重新启动 MS Word 并输入相同的文本 - 红色下划线变得可见: 在此处输入图像描述

我还尝试调用 Application.ScreenRefresh 并设置 ScreenUpdating 属性,但这没有任何效果。

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

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

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

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

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

  4. 运行以下宏

    MsgBox ActiveDocument.SpellingErrors(1).Text

您将在 MessageBox 中看到“textxt”,但看不到红色下划线

4

2 回答 2

3

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

int iDummy = wordDocument.wordApp.ActiveDocument.SpellingErrors.Count;
于 2013-07-02T16:29:45.400 回答
1

由于代表率低,我无法对 Oleg 的回答发表评论,但值得注意的是,对于Word 2013,使用该Application.ActiveDocument.SpellingErrors.Count方法似乎会出于某种深不可测的原因删除当前选择,这可能是有问题的。

通过仅检查Count当前未选择文本的时间来隐藏此效果的技巧;例如:

// "document" is a Microsoft.Office.Tools.Word.Document
var selected = document.Application.Selection.Range;
if(Math.Abs(selected.End - selected.Start) == 0)
{
    var count = document.Application.ActiveDocument.SpellingErrors.Count;
}
于 2014-11-10T22:51:37.550 回答