Click here to Skip to main content
15,889,116 members
Articles / Programming Languages / C#
Article

Using Word's spellchecker in C#

Rate me:
Please Sign up or sign in to vote.
4.44/5 (23 votes)
17 Jul 2003CPOL 246.5K   9.2K   75   37
An article on using Word's spellchecker from a textbox in C#

Image 1

Introduction

This little function written in C# will invoke Microsoft Word's spellchecker and check the spelling of a given textbox.

Background

I had written a program in C# in which a spellchecker could be useful. Since I had a hard time finding any information on the net or in the MSDN Library for .NET, on how to use Word's spellchecker from a C# application I was wondering if it was because it was a trivial affair to program, something only a few people would use or because it was actual difficult to program. I decided to dig deeper into it. A VBA script that I found on the net convinced me that it would be possible to find a solution. The following article in MSDN "AutoWord Sample: Demonstrates Automating Microsoft Word" pointed in the right direction and from there it was straight forward.

Using the code

Remember to reference the Microsoft Word xx Object Library. (Interop.Word.dll) There are so many properties and functions for the document object that if you want to use a similar logic for a RichTextBox it should be fairly simple.

C#
...
using Word;
using System.Reflection;

........................

private void button1_Click(object sender, System.EventArgs e) 
{ 
    fSpellCheck(textBox1 , label1 ); 
}
 
public void fSpellCheck(TextBox tBox, Label lLbl) 
{ 
    int iErrorCount = 0; 
    Word.Application app = new Word.Application(); 
    if (tBox.Text.Length > 0) 
    { 
        app.Visible=false; 
        // Setting these variables is comparable
        // to passing null to the function. 
        // This is necessary because the C# null
        // cannot be passed by reference. 
        object template=Missing.Value; 
        object newTemplate=Missing.Value; 
        object documentType=Missing.Value; 
        object visible=true; 
        object optional = Missing.Value; 
        _Document doc = app.Documents.Add(ref template, 
           ref newTemplate, ref documentType, ref visible); 
        doc.Words.First.InsertBefore (tBox.Text ); 
        Word.ProofreadingErrors we = doc.SpellingErrors; 
        iErrorCount = we.Count; 
        doc.CheckSpelling( ref optional, ref optional, ref optional, 
            ref optional, ref optional, ref optional, ref optional, 
            ref optional, ref optional, ref optional, 
            ref optional, ref optional); 
        if (iErrorCount == 0) 
            lLbl.Text = "Spelling OK. No errors corrected "; 
        else if (iErrorCount == 1) 
            lLbl.Text = "Spelling OK. 1 error corrected "; 
        else 
            lLbl.Text = "Spelling OK. " + iErrorCount + 
                                    " errors corrected "; 
        object first=0; 
        object last=doc.Characters.Count -1; 
        tBox.Text = doc.Range(ref first, ref last).Text; 
    } 
    else 
        lLbl.Text = "Textbox is empty"; 
    object saveChanges = false; 
    object originalFormat = Missing.Value; 
    object routeDocument = Missing.Value; 
    app.Quit(ref saveChanges, ref originalFormat, ref routeDocument); 
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Canada Canada
Working as a software developer - currently workflow management tools - and enjoying every minute of it.

Comments and Discussions

 
GeneralRe: The screen splash after spellcheck completed Pin
gugaime15-Aug-06 19:20
gugaime15-Aug-06 19:20 
GeneralRe: The screen splash after spellcheck completed Pin
shahbaz rehman15-Apr-08 3:01
shahbaz rehman15-Apr-08 3:01 
Generalspell check for website Pin
sb785-Jul-05 11:40
sb785-Jul-05 11:40 
GeneralRe: spell check for website Pin
nyland6-Jul-05 6:47
nyland6-Jul-05 6:47 
GeneralRe: spell check for website Pin
sb786-Jul-05 10:18
sb786-Jul-05 10:18 
GeneralRe: spell check for website Pin
anit10-Jul-05 13:08
anit10-Jul-05 13:08 
GeneralCreating a Custom Spell-Checker with Word 2003 Pin
Wagner DosAnjos23-Mar-05 9:47
Wagner DosAnjos23-Mar-05 9:47 
GeneralEULA Pin
Kant18-Jul-03 8:17
Kant18-Jul-03 8:17 
FYI for everyone that is thinking about using this approach:

The EULA specifically disallows 3rd parties from binding to objects like the word spell checker outside of MS word.

If anybody interested in much better approach, then get it from the following.

Use Word's spell checker from .net[^]

Demo application works under .NET 1.1 version. But on the top of the article it mentioned .NET 1.0


"If a jug falls upon a stone, woe to the jug. If a stone falls upon a jug, woe to the jug. Always woe to the jug"." - KaЯl

This signature was created by "Code Project Quoter".
GeneralRe: EULA Pin
Rei Miyasaka11-Nov-04 11:33
Rei Miyasaka11-Nov-04 11:33 
GeneralRe: EULA Pin
CSpotkill13-Nov-04 21:36
CSpotkill13-Nov-04 21:36 
GeneralRe: EULA Pin
James S. Taylor5-Jun-07 12:44
James S. Taylor5-Jun-07 12:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.