Added Error Handling as sometimes the temp file doesn't close and added a variable to maintain the focus on the original document:
Code:
Private Sub cmdSpellCheck_Click()
'Spell check certain fields in a UserForm
'Adapted from http://computer-programming-forum.com/1-vba/3853759c12e8d3ae.htm
'By Ann K Bohma, Bra Utbildning AB, Sweden
Dim sActiveDoc As String
sActiveDoc = ActiveDocument.Name 'maintain focus on the active document
'Create a new document
Dim oDoc2 As Document
Set oDoc2 = Documents.Add
On Error Resume Next
With oDoc2
'Set language and style (can be omitted)
'.Styles(wdStyleNormal).LanguageID = wdEnglish
'.Range.Style = wdStyleNormal
DoSpellCheck TextBox1
'etc etc or Loop all controls checking for textcontrols
.SpellingChecked = True 'can be omitted,
.Close wdDoNotSaveChanges
End With
Documents(sActiveDoc).Activate
MsgBox "Spelling and Grammar Check Complete"
End Sub
Private Sub DoSpellCheck(oTxtBox As Control)
Dim oRng As Range
Dim strText As String
With oTxtBox
If Not .Value = "" And Not .Value = "<WhatEver>" Then
Set oRng = oDoc2.Range
oRng = .Value
With oRng
.CheckSpelling AlwaysSuggest:=True
.CheckGrammar 'I added grammar to the code from the post
'Set the range eliminating the last CR/Enter
.SetRange .Start, .End - 1
End With
'Return data to the Userform
.Value = oRng.Text
End If
End With
End Sub