45

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 6

37

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
  • Just a quick note: perhaps make the following sentence bold, so that the solution is immediately clear: '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' Commented Jan 14, 2011 at 9:57
  • 4
    Thanks AdamV, great answer! The problem with this approach, however, is that depending on how the textboxes were added to the slide, they might not show in the outline view. Which was the pretty much the case for almost every object on the presentation I had to fix.
    – Leonardo
    Commented Mar 16, 2011 at 0:59
  • Yes, I guess if people add lots of independent text boxes these need to be selected using a method such as the original macro posted.
    – AdamV
    Commented Mar 21, 2011 at 9:56
  • For me, this only worked on existing text in PowerPoint 2010. For newly added text, the language would still change in certain cases.
    – Pieter
    Commented Apr 14, 2014 at 13:28
  • This is by far the cleanest way of dealing with this. It works in 2013 version too.
    – GoTTimw
    Commented Feb 11, 2016 at 16:12
18

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
3

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.

1

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
  • Thanks for your answer! It wasn't any of those situations, though. What happens is that every text box can be set to a different language for spell-checking, and in this particular scenario all the elements had the wrong language. The default language in the system (and in the office installation) is English.
    – Leonardo
    Commented Oct 15, 2009 at 21:48
0

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.

0

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .