Scope: All desktop versions of Word (Mac and Windows)
Technical Level: Beginner - Intermediate
Summary:
The question posted here is: How can I keep my proofing language changing (often to English US)? or The Spelling Checker doesn't work!
The basic answer is that unless you do your work on an isolated computer and do not paste into your document, you cannot. However, there are steps you can take that will make things go much more smoothly.
This article first discusses four things to do in your system and in your document to make proofing language work for you.
Then three macros are provided with instructions for making deeper-level changes. Those macros can also be used for problems with "Do Not Check Spelling or Grammar" issues.
I urge anyone running into problems with the spelling checker to read Mastering the Spelling Checker by Suzanne Barnhill, MVP . As far as I know, that is the best discussion of problems and solutions that involve that tool.
Detail:
First, if possible, your Operating System (Windows/MacOS) regional language settings should match your primary language setting in Word.
Second: Become familiar with the Proofing Language as a concept and with the Proofing Language Dialog
The "proofing language" is a key to several Word features including spelling and grammar and AutoCorrect. It is not an application-wide setting nor even a document setting; it is set at the character level! It is set at the character level in every document.
Status Bar (This part about the Status Bar may only apply to Windows versions.)
You can display the proofing language for a particular place in a document on the Status Bar. (Windows) If this is not showing there, right-click and add it.
Right-clicking on the Status Bar lets you check or uncheck what you want there.
Because the proofing language is character-level formatting, it can be imported when you paste text from other documents or from the Internet (or within a document). It can be in your Styles.
Third, make sure that you turn off the proofing option to detect language automatically. Word is bad at this and terrible when it comes to distinguishing the spelling in various forms of
English (or other languages with multiple spelling versions).
There are two checkboxes at the bottom of the dialog. Both should be blank (empty).
On this dialog, the settings for what the proofing language is and for checking spelling are grammar are at the character level.
On the other hand, the setting for detecting language automatically is a system setting that applies to all documents that you open until it is changed.
Fourth: The simplest thing to do for an immediate fix to a document is to select all the text in your document and apply the correct proofing language. Ctrl+A and then Reviewing tab > Language > Proofing Language and then select the correct language. (Clicking on the language in the status bar will take you directly here.
Also, make sure the box "Do not check Spelling or Grammar" is not checked. If misspelled words are not being flagged, this is almost always the problem.
For a single document with problems, this solution of selecting and changing will give a quick fix.
Again, it is important that you keep in mind that the proofing language can be in any text that you paste in!
==============================================================
Macros can be used for tougher problems.
- Proofing language in headers/footers, textboxes, etc. within a document
- Proofing language contained in Styles in the document
- Proofing language contained in Styles in the Normal template.
Here are three macros to address these problem-. Although they are set for English UK or English AUS, you can change that. See Language IDs in VBA to find the language ID you would want if not English UK.
If you are just dealing with your language setting changing to "Do Not Check Spelling or Grammar" you can delete or comment out the lines dealing with the proofing language.
The first one is for an individual document to set the proofing language for all text to English US.
- Again, change the language ID if you want a different language.
- Also turns off any "do not check attribute. - Delete or comment out line if you do not want this.
- If you are just dealing with "do not check" delete or comment out the lines with the language attribute. These are marked below.
Sub ProofingLanguageEnglishUSAllStory() ' based on field updater by Greg Maxey
'
https://gregmaxey.com/word_tip_pages/word_fields.html
' Charles Kenyon 6 November 2018
'
https://answers.microsoft.com/en-us/msoffice/forum/all/force-all-documents-to-be-edited-in-uk-english/df6d1f8e-5426-49d9-bea0-5620d0208294
' Changes proofing language to English US in all stories of document
' Language IDs https://docs.microsoft.com/en-us/office/vba/api/word.wdlanguageid
Dim rngStory As Word.range
Dim lngValidate As Long ' do not know purpose of this
Dim oShp As Shape
lngValidate = ActiveDocument.Sections(1).Headers(1).range.StoryType
For Each rngStory In ActiveDocument.StoryRanges
'Iterate through all linked stories
Do
On Error Resume Next
rngStory.LanguageID = wdEnglishUS ' delete or comment out if you do not want to change the language ID
rngStory.NoProofing = False Select Case rngStory.StoryType
Case 6, 7, 8, 9, 10, 11
If rngStory.ShapeRange.Count > 0 Then
For Each oShp In rngStory.ShapeRange
If oShp.TextFrame.HasText Then
' Comment out or delete the next line if you do not want to change
proofing language
oShp.TextFrame.TextRange.LanguageID = wdEnglishUS
' delete or comment out if you do not want to change the language ID
' Comment out or delete the next line if you do not want to change the
"no proofing" setting
oShp.TextFrame.TextRange.NoProofing = False
End If
Next
End If
Case Else
'Do Nothing
End Select
On Error GoTo -1
'Get next linked story (if any)
Set rngStory = rngStory.NextStoryRange
Loop Until rngStory Is Nothing
Next
End Sub
The second one is to change the proofing language of allStyles to English UK:
- Again, change the language ID for a different language
- This also makes sure that "do not check Spelling or Grammar" is not checked - you can delete or comment out this line if you want
- If you are just dealing with "do not check" delete or comment out the lines with the language attribute. These are marked below.
Sub StyleEnglishUK()
' Written 21 March 2018
' Charles Kenyon
' Intended to set all styles to EnglishUK, proofing, not automatically update
' Language IDs https://docs.microsoft.com/en-us/office/vba/api/word.wdlanguageid
'
Dim aStyle As Style
On Error Resume Next ' Some styles have no language attribute and will give an error
For Each aStyle In ActiveDocument.Styles
Select Case aStyle.NameLocal
Case "TOC 1", "TOC 2", "TOC 3", "TOC 4", "TOC 5", "TOC 6", "TOC 7", "TOC 8", "TOC 9", "Table of Figures", "Table of Authorities"
Let aStyle.AutomaticallyUpdate = True
Case Else
Let aStyle.AutomaticallyUpdate = False
End Select
Let aStyle.LanguageID = wdEnglishUK ' delete or comment out if you do not want to change the language ID
Let aStyle.NoProofing = False
Next aStyle
Let ActiveDocument.UpdateStylesOnOpen = False ' For information on using this line, see:
'
http://www.shaunakelly.com/word/sharing/willmyformatchange.html
On Error GoTo -1
End Sub
If the styles in your normal template are off, here is one for the normal template: English Australian
- Again, change the language ID for a different language
- This also makes sure that "do not check Spelling or Grammar" is not checked - you can delete or comment out this line if you want
- If you are just dealing with "do not check" delete or comment out the lines with the language attribute. These are marked below.
Sub StyleEnglishAUSNormalTemplate()
' Written 27 September 2019
' Charles Kenyon
' Intended to set all styles in Normal template to EnglishAUS, proofing, not automatitically update
' Use right after opening Word
' Language IDs
https://docs.microsoft.com/en-us/office/vba/api/word.wdlanguageid
'
Application.ScreenUpdating = False
Application.NormalTemplate.OpenAsDocument
Dim aStyle As Style
On Error Resume Next ' Some styles have no language attribute and will give an error
For Each aStyle In ActiveDocument.Styles
Select Case aStyle.NameLocal
Case "TOC 1", "TOC 2", "TOC 3", "TOC 4", "TOC 5", "TOC 6", "TOC 7", "TOC 8", "TOC 9", "Table of Figures", "Table of Authorities"
Let aStyle.AutomaticallyUpdate = True
Case Else
Let aStyle.AutomaticallyUpdate = False
End Select
Let aStyle.LanguageID = wdEnglishAUS ' delete or comment out if you do not want to change the language ID
Let aStyle.NoProofing = False ' also turn on spelling and grammar checking
Next aStyle
Let ActiveDocument.UpdateStylesOnOpen = False
' For information on using the above line, see:
' http://www.shaunakelly.com/word/sharing/willmyformatchange.html
ActiveDocument.Close SaveChanges:=True
Let Application.ScreenUpdating = True
Application.ScreenRefresh
MsgBox Title:="All done!", Prompt:="Proofing Language in all styles in the Normal template set to
English Australian."
On Error GoTo -1
End Sub
Note that the last two macros on styles turn on spelling and grammar checking in all styles as well as change the language. If you do not want that to happen, remove the line:
Let aStyle.NoProofing = False ' also turn on spelling and grammar checking
or go back to the styles where you want spell-checking turned off after you've run the macros. Likewise the language about automatically updating styles.
Here's how to use a macro found in this forum or on another webpage:
For PC macro installation:
- http://www.gmayor.com/installing_macro.htm (or)
- http://gregmaxey.com/word_tip_pages/installing_employing_macros.html
For Mac macro installation & usage instructions, see:
There is a Microsoft Help page on this. I disagree with some of its points but it handles some things more thoroughly than I can here.
See also Bob Korchock's excellent analysis in this thread. He says pretty much the same thing but uses different language and has a Mac perspective.