Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I tried the trick explained in a related discussion, but could not change the proofing language for all texts in all slides of a PowerPoint 2007 presentation.

Could this be a feature of PowerPoint 2007?

The following VBA "monster" did the job, but I am looking for an easier way which does not require VBA. Any ideas?

Option Explicit

Private Sub btnGerman_Click()
    Call LanguageChange(msoLanguageIDGerman)
End Sub

Private Sub btnEnglish_Click()
    Call LanguageChange(msoLanguageIDEnglishUK)
End Sub

Public Sub LanguageChange(LanguageID As Integer)
    Dim sld As Slide
    Dim shp As Shape
    Dim cnt As Integer
    Dim cntAll As Integer

    On Error GoTo ErrHandler
    Me.btnEnglish.Enabled = False
    Me.btnGerman.Enabled = False
    cntAll = ActivePresentation.Slides.Count
    cnt = 0
    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasTextFrame Then
                shp.TextFrame.TextRange.LanguageID = LanguageID
                ShapeLanguageChange shp, LanguageID
            End If
        cnt = cnt + 1
        o cnt & " / " & cntAll

    Me.btnEnglish.Enabled = True
    Me.btnGerman.Enabled = True
    Exit Sub

    MsgBox "Ooops! " & Err.Description, vbCritical, "Error!"
    Me.btnEnglish.Enabled = True
    Me.btnGerman.Enabled = True
End Sub

Private Sub o(s As String)
    Me.Label1.Caption = s
End Sub

Private Sub ShapeLanguageChange(sh As Shape, LanguageID As Integer)
    Dim sha As Shape

    If sh.Type = msoGroup Then
        For Each sha In sh.GroupItems
            If sha.Type = msoGroup Then
                ShapeLanguageChange sha, LanguageID
            ElseIf sha.HasTextFrame Then
                sha.TextFrame.TextRange.LanguageID = LanguageID
            End If
    End If
End Sub
share|improve this question
It seems that your code is the only good idea. I can't find any property or method which could set language of existing presentation with effect for all text within document. What I find works rather for new presentation, unfortunately. – Kaz Jaw Apr 15 '13 at 20:35
KazJaw is correct. While you could in theory do a lot of the work manually, the amount of effort involved is astonishing. If you're after a ready-made solution, I have commercial add-in for this at and even that doesn't pick up some odds and ends (charts and such). – Steve Rindsberg Jun 19 '13 at 14:08

You must log in to answer this question.

Browse other questions tagged .