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.

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"