Velvet Star Monitor

Standout celebrity highlights with iconic style.

general

Change the spell-checking language on a PowerPoint presentation

Writer Olivia Zamora

I received a PowerPoint presentation with dozens of slides, each of them with a number of text boxes. Although the presentation is written in English, the language for spell checking is set to Canadian French. I’m trying to change the language to English, but even if I select all the slides and select a new element on the Language dialog box, the language of the text boxes remain the same. So I have to go slide by slide selecting the text boxes and then changing the language individually.

Is there a better way to do this?

The version of PowerPoint I have installed is 2002 SP3.

2

6 Answers

I know an answer has been accepted already (which I gave +1 to since it works and is well written), but to some people the idea of creating, saving, using a macro may be too scary (or they may have security settings in place that make this hard to achieve). So an easier solution is to use normal built-in functionality to do this. The trick is to be able to select all the objects on all the slides at once, rather than the slides themselves, and this is easily achieved in the Outline view (sadly an underused feature, but great for reorganising a slide deck, promoting and demoting whole chunks, eg bullets > new slides or vice versa).

I don't have PowerPoint 2002 ("XP") so I am not sure if you need to follow instructions for 2000 or for 2003 so I cover both here:

  • In PP 2000: Go to the outline view, which is the second icon from the left at the bottom left of the screen (looks like lines with indentations).
  • In PP 2003 onwards: Go to the "normal" view (three pane layout) and at the top of the slide navigator choose "outline" rather than "slides"

In older versions, make sure you have the Outlining toolbar visible (View > Toolbars > Outlining) and click the Expand all button (later versions let you get at this through right click).

  • Ctrl-A to select all.
  • Tools > Language > Choose your language to set.
  • (from Powerpoint 2013) REVIEW > Language > Set Proofing language

Job done.

Likewise while you have everything selected you can change other things like fonts, colours etc. Although of course in many case this is better done by changing the slide master, a presentation that has had many editors may have lots of 'hard' formatting set which deviates from the underlying master and needs resetting to be consistent. You can also reset individual slides to the master style, but this may result in placeholders moving as well, which may be undesirable in some situations.

6

This thread contains the answer that worked for me.

The steps I followed were:

  1. Create a new macro:
    1.1. Go to Tools, Macro, Visual Basic Editor.
    1.2. Insert a new empty module by selecting Insert, Module.
  2. Paste this code on the right panel and save the macro:

    Option Explicit
    Public Sub ChangeSpellCheckingLanguage() Dim j As Integer, k As Integer, scount As Integer, fcount As Integer scount = ActivePresentation.Slides.Count For j = 1 To scount fcount = ActivePresentation.Slides(j).Shapes.Count For k = 1 To fcount If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then ActivePresentation.Slides(j).Shapes(k) _ .TextFrame.TextRange.LanguageID = msoLanguageIDEnglishAUS End If Next k Next j
    End Sub

    msoLanguageIDEnglishAUS can be replaced by any desired language. The full list of languages can be found here.

  3. Execute the macro (by pressing F5 within the editor, or by selecting Tools, Macro, Macros, ChangeSpellCheckingLanguage, and clicking Run).

After that all text elements within the presentation will have the new spelling language.

1

After many presentations where I did it by hand or used a one-off macro, I finally broke and made it into a proper PowerPoint Add-In.

I've uploaded it to my web site: PowerPoint LanguageFixer

It takes care of:

  • setting the default language
  • all shapes with text frames
  • text frames in grouped shapes (as far as possible)
  • text in tables
  • stuff on the slide/note/handout master

Just set one of the text boxes to the language you want, select it and click the button.

Here are two options depending on your situation:


Situation 1: The originating copy of Office was installed from a Canadian French language based install media.

You will be able to set the default language to English, but core functions will use the native language of the installation media.

The only fix is to uninstall the Canadian French version, and install from an English-based install media or copy/paste the entire presentation to a new doc and re-format.

.


Situation 2: Everything seems to be English, but in limited circumstances foreign languages appear.

In this situation, here are repair instructions for Office 2002:

  1. Click the Start menu
  2. Point to Programs
  3. Point to Microsoft Office Tools
  4. Click Microsoft Office XP Language Settings.
  5. Click the Enabled Languages tab.
  6. Go to the Default version of Microsoft Office box
  7. Select the language you want
  8. Click OK. A message will appear telling you what changes will be made.
  9. Click Continue

I hope this helps.

1

I've had the same problems with presentations made with German PowerPoint and being manually translated into English. The problem is that the language setting is essentially a formatting which is applied to each text box element on its own.

I am not aware of any convenient solution -- I have had to either live with the mismatch or manually changing the language "format" of each individual text box on each slide. Not fun, so mostly I live with it.

The code posted by Leonardo is simple and generally effective, but it will not affect Shapes in groups. A more generic code uses recursion to deal with that case too (slightly changed from here, which is in the same thread as the code by Leonardo):

Private Function ChangeLangOfAllText_caller() 'ChangeLangOfAllText (msoLanguageIDEnglishUS) ChangeLangOfAllText (msoLanguageIDSpanishArgentina)
End Function
Private Function ChangeLangOfAllText(ByVal LangID As Long) Dim MySlide As Slide Dim MyShape As Shape Dim MyD As Design Dim MyHeaderFooter As HeaderFooter Dim i, nbs As Integer ''''' First deal with the master slides For Each MyD In ActivePresentation.Designs For Each MyShape In MyD.SlideMaster.Shapes ProcessShapes MyShape, LangID Next MyShape Next MyD ''''' Now deal with the slides ' Enable this for debugging 'Debug.Print "File " & ActivePresentation.Name & _ ": working with " & ActivePresentation.Slides.Count & " slides" For Each MySlide In ActivePresentation.Slides ' Enable this for debugging 'Debug.Print " Slide index " & MySlide.SlideIndex & ", Slide number " & MySlide.SlideNumber & _ ": working with " & MySlide.Shapes.Count & " shapes" For Each MyShape In MySlide.Shapes ProcessShapes MyShape, LangID Next MyShape ''''' Now deal with the Notes For Each MyShape In MySlide.NotesPage.Shapes ProcessShapes MyShape, LangID Next MyShape ''''' Now deal with the master ' doesn't appear to work, have to try something else For Each MyShape In MySlide.Master.Shapes ProcessShapes MyShape, LangID Next MyShape Next MySlide
End Function
Private Function ProcessShapes(MyShape As Shape, ByVal LangID As Long) Dim i As Integer If ((MyShape.Type = msoGroup) Or (MyShape.Type = msoTable)) Then On Error Resume Next For i = 1 To MyShape.GroupItems.Count ''' The trick is to recurse! ProcessShapes MyShape.GroupItems.Item(i), LangID Next i Else ChangeLang MyShape, LangID End If
End Function
Private Function ChangeLang(MyShape As Shape, ByVal LangID As Long) Dim i As Integer If (MyShape.HasTextFrame) Then ' Enable this for debugging 'Debug.Print " Shape " & MyShape.ZOrderPosition & ", type: " & MyShape.Type & _ ", has text frame: " & MyShape.HasTextFrame & ", has text: " & MyShape.TextFrame.HasText & _ ", alt. text: " & MyShape.AlternativeText MyShape.TextFrame.TextRange.LanguageID = LangID End If
End Function