PowerPoint 2007: Set language for all text

December 30, 2009

I can’t believe that PowerPoint 2007 (which I like much more than PowerPoint 2003) doesn’t have a ‘set language’ setting for all text in a PowerPoint slide deck!

How did I find out that it doesn’t? I downloaded a slide template from the Microsoft Online site that happened to be set to French Canadian. I noticed that common words were coming up with the red squigglies, and when I right-clicked to check, the spelling options were in French and the language on the status bar said so.

I tried to select all slides and change the language to English (US), as I believe you could do in PowerPoint 2003. No such luck. When you select all slides from the thumbnails on the left or the Outline view, the Language option on the Review tab is grayed out in PowerPoint 2007 and there’s nothing in the PowerPoint options that allows you to set the language for the current slide deck. The only way the Language option works is if you go through your presentation slide by slide, selecting the text boxes on EACH slide and resetting the language for that slide. Painful!!

Off to the internet… There’s very little about this on the Microsoft Office Communities forums (as an aside, despite being one of those people who’s willing to spend the time looking for an answer, I find those Microsoft forums really frustrating to use and search, and half the time the selected post on a thread doesn’t display for me in IE8).

However, I had a bit better luck with a Google search. Here are a couple of solutions I found, both of which involve macros.

I used the first one and it worked well. I changed the ‘msoLanguageIDEnglishUK’ language  in that macro to ‘msoLanguageIDEnglishUS’, then ran the macro on the current slide deck. I understand this macro only works on the slide deck it is assigned to, so it’s not a solution for changing multiple slide decks at once. But at least I didn’t have to go to every slide and change the language setting for the text boxes on each one.

I still can’t believe that what I consider basic functionality in Microsoft Word, does not exist in PowerPoint 2007. At least, not without adding and running a macro, something that I suspect is outside the understanding of most standard PowerPoint users.

[Links last checked December 2009]

Chocotooth macro:

<br />
<pre>Sub SetLangUK()<br />
'set language to UK for all slides and notes:<br />
Dim scount, j, k, fcount<br />
scount = ActivePresentation.Slides.Count<br />
For j = 1 To scount<br />
fcount = ActivePresentation.Slides(j).Shapes.Count<br />
For k = 1 To fcount 'change all shapes:<br />
If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then<br />
ActivePresentation.Slides(j).Shapes(k).TextFrame _<br />
.TextRange.LanguageID = msoLanguageIDEnglishUK<br />
End If<br />
Next k<br />
'change notes:<br />
fcount = ActivePresentation.Slides(j).NotesPage.Shapes.Count<br />
For k = 1 To fcount 'change all shapes:<br />
If ActivePresentation.Slides(j).NotesPage.Shapes(k).HasTextFrame Then<br />
ActivePresentation.Slides(j).NotesPage.Shapes(k).TextFrame _<br />
.TextRange.LanguageID = msoLanguageIDEnglishUK<br />
End If<br />
Next k<br />
Next j<br />
End Sub<br />


  1. Did you notice the language information at the bottom status line of PowerPoint 2007? If you mark a text and click there you can set a language for text just as before. Took me also a while to figure it out… ;-)

    Btw.: Microsoft advises to switch the keyboard layout to the language you’re text should be in. This is totaly absurd and ignorant and leaves the impression that they never tried this for themselves when typing simultaniously in multiple languages. (Just think of special characters…)

  2. The trick is to switch the keyboard layout to the
    wanted language. And yes, it a stupid flaw from MS.


  3. It works! Thanks a million for this and someone: please spank Microsoft for this; it should be a built-in feature!

  4. The above macro is great, but it doesn’t change the text in tables copied from Excel (or I think any table).

    Any idea on how to update this macro to include tables?

    Many thanks!

  5. I had the same problem, and, in order to get the classic menus back I used ubit (google ubit classic menues), then I selected all the text and went to tools>language and selected “English (Canada)”.

  6. 1. Right-click the office button.
    2. Choose “Customize Quick Access Toolbar”
    3. On the “Choose commands from” drop-down select “All Commands”
    4. In the panel below, scroll down until you find the command “Language”.
    5. Click the “Add” button to add it to your Quick Access Toolbar.
    6. Click OK.
    7. Voila: you now have a language button right at the top on the right-hand side of the Office button.
    8. To change the language setting for the whole document, click somewhere in your Powerpoint document (click outside of a textbox)
    9. Do Ctrl+A to select everything.
    10. Click your newly created Language button.
    11. Choose desired language and press OK.
    12. Bingo.

  7. I had the same problem.
    Easy fix: Go to Outline and select from there all slides with Ctrl+A
    Now go to Review->Language and set the language to whatever you want.
    Worked well in Office 2010 English and German version.

  8. Seconding the solution from Andrei, above. I work frequently on English and French presentations, and this has been a bug-bear for months.

    Andrei’s solution is a winner! While the ‘Language’ option remains greyed out when you are in the ‘Slides’ view, it becomes active in the ‘Outline’ view.

    Thanks mate, you just saved me a lot of work :).

  9. The outline view option does a great job, but beware – it only sets the proofing language on what is in the outline. If you have special call-out boxes and other elements with text in your presentation, you still have to manually change the language slide by slide.

  10. I am not a experienced PowerPoint user, but it took me seconds to figure it out that changing to Outline view I can mark all I want and change the language. Macros to do that?. . . OMG, incredible. . .

  11. So I have a 37 slide ppt in En and need it in German – tried changing lang by ctrl+A on OUTLINE (worked to mark all slides) but text boxes are still in EN. How annoying is that? Microsoft boffins need a kick up the a***.

    Anyone know how I can remedy this situation? Some good ideas here but don’t seem to quite work for me.

  12. MS Office (all versions) have been driving me absolutely nuts over the years when it comes to language settings.
    Using Office 2010 (Powerpoint), I now have every possible setting set to use English (UK) as default. I even selected all the text in my text box and set the Proofing language to “English (UK)”. Clicking anywhere in the text box I also see in the status bar that it is using “English (UK)”. BUT… the moment I type the first letter in a new line in that same text box, the status bar indicates “English (US)”.

  13. Worked really good with outline, ctrl+a, set proofing language! Thanx a lot!

  14. In Powerpoint 2007, you find the outline view in View->presentation views-normal-> press the “outline”-button above the slide thumbnails. Then select all text, and voilá, you can set the language for the text.

    This isn’t a complete solution however. If you have text in tables, you won’t be able to access that through the outline view. Microsoft should SERIOUSLY make it possible to change the language for all slide content easily. This is a problem in all multi-language countries. I personally can’t believe that this is still an issue!

  15. Earlier (our company recently switched from xp with IE 6 and office 2003 to windows 7 with IE 8 and office 2007… Woohoow) I assembled a macro that modified (almost) each and every drawing, textbox, table, … in a presentation. And it worked perfectly. I added this macro as a Add-in, which automatically loaded this plugin into every presentation I ever opened.

    However, now with Office 2007 this is no longer available and you need to adapt the ribbons…Being a non-technical person, this is one bridge too far…

    However, here is the code. It still works if you run it through visual basic. Enjoy !!

    Public Sub changeLanguage()
    On Error Resume Next
    Dim gi As GroupShapes
    lang = msoLanguageIDEnglishUS
    ‘Set default language in application
    ActivePresentation.DefaultLanguageID = lang

    ‘Set language in each textbox in each slide
    For Each oSlide In ActivePresentation.Slides
    Dim oShape As Shape
    For Each oShape In oSlide.Shapes
    ‘Check first if it is a table
    If oShape.HasTable Then
    For r = 1 To oShape.Table.Rows.Count
    For c = 1 To oShape.Table.Columns.Count
    oShape.Table.Cell(r, c).Shape.TextFrame.TextRange.LanguageID = lang
    Set gi = oShape.GroupItems
    ‘Check if it is a group of shapes
    If Not gi Is Nothing Then
    oShape.TextFrame.TextRange.LanguageID = lang
    If oShape.GroupItems.Count > 0 Then
    For i = 0 To oShape.GroupItems.Count – 1
    oShape.GroupItems(i).TextFrame.TextRange.LanguageID = lang
    End If
    ‘it’s none of the above, it’s just a simple shape, change the language ID
    oShape.TextFrame.TextRange.LanguageID = lang
    End If
    End If
    End Sub

  16. Thanks for sharing that macro, Steve.


  17. If you want to change the text in the text boxes itself, you can just translate it in your Master slide. No macro required. (and just set your spelling checker in the language of your choice as default).

    At least, that worked for me :)

  18. To Annelies: do you mean to say that you change the default language used by Powerpoint??? If you switch back and forth between languages for different presentations, that is not an option.

    I did try to set the language spelling option for ALL master slides in my template to English US. however, whenever I want to create a new slide using that template, the default French language is defined for all pre-defined text boxes. Same if I add a box independently from the template.

    Using +a in slide outline also only changes the text which is already there, not the one you wish to write next (which is where spelling mistakes happen).

    I see that this post is now 2 years and a half old: MS did not bother to listen to its international users and publish a work-around? I am still looking for it…

  19. the macro from choco does not treat all objects in pptx 2007 that can hold text, eg tables are not processed. the macro from the Microsoft knowledge article is better.

  20. Hi all, I’m made my own version of this – using recursion over groups and adding two simple icons to the addons ribbon for new powerpoint versions. Works great for me (all shapes, groups, tables, default language).

    Sub Auto_Open()
    Dim oToolbar As CommandBar
    Dim enButton As CommandBarButton
    Dim MyToolbar As String

    ‘ Give the toolbar a name
    MyToolbar = “Translation tools”

    On Error Resume Next
    ‘ so that it doesn’t stop on the next line if the toolbar’s already there

    ‘ Create the toolbar; PowerPoint will error if it already exists
    Set oToolbar = CommandBars.Add(Name:=MyToolbar, _
    Position:=msoBarFloating, Temporary:=True)
    If Err.Number 0 Then
    ‘ The toolbar’s already there, so we have nothing to do
    Exit Sub
    End If

    On Error GoTo ErrorHandler

    ‘ Now add a button to the new toolbar
    Set enButton = oToolbar.Controls.Add(Type:=msoControlButton)
    ‘ And set some of the button’s properties
    With enButton
    .DescriptionText = “Powerpoint language macro”
    ‘Tooltip text when mouse if placed over button
    .Caption = “Text to English (UK)”
    ‘Text if Text in Icon is chosen
    .OnAction = “ButtonEnglish”
    ‘Runs the Sub Button1() code when clicked
    .Style = msoButtonIcon
    ‘ Button displays as icon, not text or both
    .FaceId = 507
    ’52 is my favorite pig;
    ‘ chooses icon #52 from the available Office icons
    End With

    ‘ Now add a button to the new toolbar
    Set czButton = oToolbar.Controls.Add(Type:=msoControlButton)
    ‘ And set some of the button’s properties
    With czButton
    .DescriptionText = “Powerpoint language macro”
    ‘Tooltip text when mouse if placed over button
    .Caption = “Text to Czech”
    ‘Text if Text in Icon is chosen
    .OnAction = “ButtonCzech”
    ‘Runs the Sub Button1() code when clicked
    .Style = msoButtonIcon
    ‘ Button displays as icon, not text or both
    .FaceId = 507
    ’52 is my favorite pig;
    ‘ chooses icon #52 from the available Office icons
    End With

    oToolbar.Top = 150
    oToolbar.Left = 150
    oToolbar.Visible = True

    Exit Sub ‘ so it doesn’t go on to run the errorhandler code

    ‘Just in case there is an error
    MsgBox Err.Number & vbCrLf & Err.Description
    Resume NormalExit:
    End Sub

    Sub ButtonEnglish()
    ChangeSpellCheckingLanguage msoLanguageIDEnglishUK
    MsgBox “Language of all shapes changed to English”
    End Sub

    Sub ButtonCzech()
    ChangeSpellCheckingLanguage msoLanguageIDCzech
    MsgBox “Language of all shapes changed to Czech”
    End Sub

    Public Sub ChangeSpellCheckingLanguage(ByVal language As Integer)

    Dim j As Integer, k As Integer, r As Integer, c As Integer, i As Integer
    Dim scount As Integer, fcount As Integer
    Dim oShape As shape
    Dim gi As GroupShapes
    Dim rec As Integer, recMax As Integer

    recMax = 50
    rec = 1

    ActivePresentation.DefaultLanguageID = language

    scount = ActivePresentation.Slides.Count
    For j = 1 To scount
    fcount = ActivePresentation.Slides(j).Shapes.Count
    For k = 1 To fcount
    Set oShape = ActivePresentation.Slides(j).Shapes(k)
    ChangeSpellCheckingLanguageRecursive language, oShape, rec, recMax
    Next k
    Next j

    End Sub

    Public Sub ChangeSpellCheckingLanguageRecursive(ByVal language As Integer, ByVal shape As shape, _
    ByVal rec As Integer, ByVal recMax As Integer)

    If (rec 0 Then
    For i = 1 To gi.Count – 1
    Dim gShape As shape
    Set gShape = gi(i)
    ChangeSpellCheckingLanguageRecursive language, gShape, rec, recMax
    Next i
    End If
    End If
    End If

    ‘Check if textframe:
    If shape.HasTextFrame Then
    shape.TextFrame.TextRange.LanguageID = language
    End If
    End If
    End Sub

  21. Oh btw it’s code grabbed from various tutorials and blogs with minor changes and coding of my own – it’s mainly just all the different snippets I’ve found put into one – add your own language buttons, functions etc (a better version would be to open a user form with a language dropdownlist – I might make that addition some time).

  22. I tried the Stevhen Schutter Macro and it works fine. The only thing it didn’t cover was SmartArt text boxes. Would it be possible to ad an ‘If’ statement to cover these (like the section for tables)?

  23. I edit and distribute PowerPoints written in English, but on computers whose language isn’t set to U.S. English. The solution from Andrei above worked well, but then I needed the text bo and call outs solution. Thanks to everyone! Why isn’t MS catching up with their users?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: