Click here to Skip to main content
6,305,776 members and growing! (17,604 online)
Email Password   helpLost your password?
Languages » C# » COM Interop     Intermediate License: The Code Project Open License (CPOL)

Using Word's spellchecker in C#

By nyland

An article on using Word's spellchecker from a textbox in C#
C#, Windows, .NET 1.0, .NET 1.1VS.NET2003, Dev
Posted:17 Jul 2003
Views:87,458
Bookmarked:52 times
Announcements
Loading...
 
Search    
Advanced Search
printPrint   Broken Article?Report       add Share
  Discuss Discuss   Recommend Article Email
17 votes for this article.
Popularity: 5.14 Rating: 4.18 out of 5

1
1 vote, 5.9%
2
2 votes, 11.8%
3
4 votes, 23.5%
4
10 votes, 58.8%
5

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.

...
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)

About the Author

nyland


Member
Working as a software developer - currently workflow management tools - and enjoying every minute of it.
Occupation: Web Developer
Location: Canada Canada

Other popular C# articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 22 of 22 (Total in Forum: 22) (Refresh)FirstPrevNext
Generalcount is missleading on the number of errors actually corrected Pinmemberwleon7:13 14 Nov '08  
Generalcheckspelling dialog not appearing PinmemberMember 175104014:01 14 Aug '08  
GeneralHang? Pinmemberkikytan22:07 20 Apr '08  
GeneralRe: Hang? Pinmembermnevis7:29 2 Jul '08  
GeneralRe: Hang? Pinmemberdavidc@innosphere.ca5:40 6 Aug '08  
GeneralRe: Hang? Pinmemberfelchaal9:44 28 Aug '08  
Generalspell-checking service Pinmemberhnipak4:56 19 Oct '06  
GeneralMore than just the count Pinmemberroutsoja8:32 5 Jun '06  
Generalspell check for website without it's dialog Pinmemberhala_ref3at12:18 3 May '06  
Generalhow to have rtf style in richtextbox? Pinmemberhduani3:02 7 Nov '05  
GeneralThe screen splash after spellcheck completed Pinmemberquangvinh2:02 19 Oct '05  
GeneralRe: The screen splash after spellcheck completed Pinmembergugaime20:20 15 Aug '06  
GeneralRe: The screen splash after spellcheck completed Pinmembershahbaz rehman4:01 15 Apr '08  
Generalspell check for website Pinmembersb7812:40 5 Jul '05  
GeneralRe: spell check for website Pinmembernyland7:47 6 Jul '05  
GeneralRe: spell check for website Pinmembersb7811:18 6 Jul '05  
GeneralRe: spell check for website Pinmemberanit14:08 10 Jul '05  
GeneralCreating a Custom Spell-Checker with Word 2003 PinmemberWagner DosAnjos10:47 23 Mar '05  
GeneralEULA PinmemberKant9:17 18 Jul '03  
GeneralRe: EULA Pinmemberreinux12:33 11 Nov '04  
GeneralRe: EULA PinmemberCSpotkill22:36 13 Nov '04  
GeneralRe: EULA PinmemberJames S. Taylor13:44 5 Jun '07  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 17 Jul 2003
Editor: Smitha Vijayan
Copyright 2003 by nyland
Everything else Copyright © CodeProject, 1999-2009
Web18 | Advertise on the Code Project