Using Microsoft Word Spell Check

The following code shows a function for checking the number of spelling and grammar errors in a string. This function is also used to check the accuracy of a specific property in all the objects of a given application. This example can be found in the SpellCheck.vbs file located in the <Installdir>\CodeSamplesPlus folder.

This example is written in VBScript. To write similar code in Python, replace programming language statements with Python ones and make other syntax adjustments as necessary.

Copy code
Function NumberOfSpellErrors(strText)
    Dim objMsWord
    Set objMsWord = CreateObject("Word.Application")
    objMsWord.WordBasic.FileNew
    objMsWord.WordBasic.Insert strText
    NumberOfSpellErrors = objMsWord.ActiveDocument.SpellingErrors.Count
    objMsWord.Documents.Close (False)
    objMsWord.Quit ' close the application
    Set objMsWord = Nothing' Clear object memory
End Function

' The following function uses the Spell errors function to check a specific property
' of all the objects with a given description which are under a given parent
Sub CheckAllObjects(ParentObj, ObjDesc, PropName)
    Dim ObjCol, idx, PropValue, OldReportMode
    OldReportMode = Reporter.Filter
    Reporter.Filter = 2 ' Report only errors
    If (IsNull(ParentObj)) Then
        Set ObjCol = Desktop.ChildObjects(ObjDesc)
    Else
        Set ObjCol = ParentObj.ChildObjects(ObjDesc)
    End If

    For idx=0 to ObjCol.count-1
        PropValue = ObjCol.Item(idx).GetROProperty(PropName)
        RetVal = NumberOfSpellErrors(PropValue) ' The actual spell check result
        If (RetVal > 0) Then
            ReportText = "Object #" & idx+1 & ": The '" & PropName & "' Property has " & RetVal & " spell errors (" & PropValue & ")"
            Reporter.ReportEvent 1, "Spell Check", ReportText
        End If
    Next
    Reporter.Filter = OldReportMode
End Sub

'''''''''''''''''''''''''''''''''''''
' An example of usage:
' Go over all the static objects in the Login window of the Flight Application
' and for each object check the text for spelling and grammatical errors
'''''''''''''''''''''''''''''''''''''

Set Desc = Description.Create()
Desc("nativeclass").Value = "Static"

Set Obj = Dialog("nativeclass:=#32770", "text:=Login")

' Invoke the Flight Application before calling the function
CheckAllObjects Obj, Desc, "text"