【发布时间】:2013-06-20 23:42:02
【问题描述】:
我的代码需要在 MS Word 2010 中启用拼写检查,以便用户可以在拼写错误下看到红色下划线。
在当前版本中,我尝试这样做以启用拼写检查:
wordApplication.Options.CheckSpellingAsYouType = true;
wordApplication.Options.SuggestSpellingCorrections = true;
wordApplication.ActiveDocument.ShowSpellingErrors = true;
wordApplication.ActiveDocument.CheckSpelling();
我打开 Word 并输入“测试文本字符串”。在此之后我运行我的代码但没有任何反应:
我在“textxt”下看不到任何下划线。如果我转到选项,我会看到“键入时检查拼写”选项已启用:
现在如果我检查这个属性:
wordApplication.ActiveDocument.SpellingErrors[0].Text
它将包含“textxt”,表示实际检查了拼写。
另外,如果我只是重新启动 MS Word 并输入相同的文本 - 红色下划线变得可见:
我也尝试调用 Application.ScreenRefresh 并设置 ScreenUpdating 属性,但这没有任何效果。
注意:我在开始时运行此代码/宏,此时文档中没有文本。如果有一些文字 - 它可以工作。
注意2:重现的具体步骤:
启动 MS Word。转到选项并禁用“键入时检查拼写”。重新启动 Word。
-
启动 Word 并运行以下宏:
Options.CheckSpellingAsYouType = true Options.SuggestSpellingCorrections = true ActiveDocument.ShowSpellingErrors = true 输入以下文本:“测试文本字符串。”。按 Enter。
-
运行以下宏
MsgBox ActiveDocument.SpellingErrors(1).Text
您将在 MessageBox 中看到“textxt”,但看不到红色下划线
【问题讨论】:
-
这是 VBA 吗? VBA 在行尾不使用分号,最后一行不包含括号。当我进行这些更改并运行这些代码行时,texxt 会带有下划线,并且会弹出一个拼写对话框询问我是否要更改它。运行代码时不会出错?
-
那是 C#。但是我对 VBA 也有同样的问题。仅当文档包含一些文本但它为空且此宏在我开始输入某些内容时在开头运行时才有效 - 我看不到任何红色下划线。
-
我不想将此作为答案发布,因为我无法真正重现您所获得的内容。但是,我确实发现运行宏 Word 后仍会自动更正简单的错误。我添加了行 Application.AutoCorrect.ReplaceTextFromSpellingChecker = False 导致出现红线。
-
您应该会在代码运行后发现,在您对文档进行更改之前,不会进行“键入时”检查。您可能还需要等待,因为它是后台作业。与
CheckSpellings调用无关,不会影响显示。 -
@Christina,使用 AutoCorrect.ReplaceTextFromSpellingChecker 操作对我没有帮助
标签: c# vba automation ms-word