Rapidly switching proofing language in Microsoft Word

After selecting the whole text (hopefully with Ctrl+A), a quicker way is to click the Language button on the status bar, then select the Language on the window that opened. You will not have 4 shortcuts but you will have reduced the amount of clicks.

if you don't see the Language button, right-click on the status bar, then select Language.

enter image description here


You could use macros. To be thorough here are two demonstration macros:

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

        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
                   ' 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

Sub StyleEnglishUK()
'   Written 21 March 2018
'   Charles Kenyon
'   Intended to set all styles to EnglishUK, proofing, not automatitically 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
        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

You will need to put in the appropriate language IDs.

  • The first macro does what you are already doing except it also picks up the language in any textboxes and in headers and footers, footnotes, etc.
  • The second macro deals with styles in the document.

You could chain the two macros together so they could be run from a single shortcut.

More on this can be found in my article on the Microsoft Answers site. If you need more help with this or questions, please comment.