Donnerstag, 23. Oktober 2014

Spracheinstellungen bei PowerPoint in allen Elementen auf allen Folien ändern - eine Anleitung

Hier kommt ein Tipp aus dem Bereich Microsoft Office. Wenn Sie öfter Präsentationen in verschiedenen Sprachen erstellen, z. B. heute eine in deutscher Sprache und morgen eine in englischer Sprache, kennen Sie sicher dieses Problem: Sie schreiben einen englischen Text und fügen verschiedene Formen mit Text hinzu. Nun ist jeder Text rot unterstrichen, weil es kein deutsches Wort ist. Nun müssen Sie jedes einzelne Wort markieren und ihm die englische Spracheinstellung zuweisen. Bei 10 Folien mit 3-10 Elementen müssen Sie das also 30-100mal tun. Mit dem folgenden Makro und der folgenden Anleitung geht es deutlich schneller.

Bei Word ist es einfach, die Sprache des Textes zu ändern. Sie markieren den ganzen Text und klicken in der Statuszeile unten in Word auf die aktuell eingestellte Sprache. Es öffnet sich ein Dialog, in dem Sie die neue Sprache auswählen (siehe Abb. 1.).

Abb. 1: Die Spracheinstellungen für den Text in Microsoft Word ändern
So einfach geht das bei PowerPoint nicht. Dort müssen Sie jedes Element einzeln auswählen und bearbeiten. Das ist ziemlich mühsam.

Wenn Sie im Netz nach Lösungen zu diesem Problem suchen, stoßen Sie auf zwei Makros von Duncan Jones auf der Webseite Superuser.com (/1/). Das erste Makro stellt die Sprache ein und ruft das zweite solange auf, bis alle Elemente auf allen Folien geändert wurden.

Für die englische Sprache müssen Sie die Language ID "msoLanguageIDEnglishUK" verwenden, für die deutsche Sprache "msoLanguageIDGerman". Eine Liste der Sprachen gibt es bei Microsoft (/2/).

Aber wir haben das Problem noch nicht gelöst:
  • PowerPoint kann Makros nur speichern, wenn die Präsentation mit der Erweiterung pptm gespeichert wird.
  • Theoretisch müssen Sie die Makros in jeder Präsentation speichern, in der Sie die Sprache ändern wollen.
  • Wenn Sie eine einmal die Sprache auf Englisch eingestellt haben und danach eine Präsentation in deutscher Sprache erstellen wollen, müssen Sie erst alles auf Deutsch umstellen.
Ich habe für mich folgende Lösung gefunden.
  • Ich lege eine leere PowerPoint-Datei mit der Erweiterung pptm (PowerPoint-Präsentation mit Makros (*.pptm)) an, z. B. Change_Languages.pptm. (siehe Abb. 2)
  • In dieser Datei speichere ich meine drei Makros (Quelltext siehe unten) ab.

Abb. 2: Datei mit Erweiterung pptm speichern
Wenn ich nun in einer Präsentation die Sprache ändern will, öffne ich gleichzeitig die Datei Change_Languages.pptm. In der ersten Präsentation kann ich die Makros über die Funktion "Ansicht > Makros" auswählen. Da in der ersten Präsentation keine Makros enthalten sind, wähle ich unten die Change_Languages.pptm aus (siehe Abb. 3).
Abb. 3: Makros aus einer anderen Präsentation auswählen
Wenn Sie wollen, dass die Texte auf alle Folien gemäß deutscher Rechtschreibung geprüft werden, rufen Sie das Makro "ChangeProofingLanguageToGerman" auf. Wenn Sie das für die englische Rechtschreibung haben wollen, starten Sie das Makro "ChangeProofingLanguageToEnglish". Wenn Sie eine andere Sprache wollen, kopieren Sie das Makro, benennen es um und fügen die entsprechende Konstante für die andere Sprache ein.

Die folgende Abbildung 4 zeigt einen Auschnitt aus einer Folie vor und nach dem Aufrufen des Makros.
Abb. 4: vor und nach dem Makroaufruf von ChangeProofingLanguageToEnglish
Vorher war die deutsche Sprache eingestellt. Alle englischen Texten wurden daher rot markiert. Nach dem Makroaufruf erkennt PowerPoint alle Texte als englischsprachige Texte.

Anmerkungen

Quellen der VBA-Makros

Dank an User Duncan, siehe https://superuser.com/questions/432366/how-do-i-change-the-language-of-all-powerpoint-slides-at-once/


Sub ChangeProofingLanguageToEnglish()
    Dim j, k As Integer
    Dim languageID As MsoLanguageID

    'Set this to your preferred language
    languageID = msoLanguageIDEnglishUK

    For j = 1 To ActivePresentation.Slides.Count
        For k = 1 To ActivePresentation.Slides(j).Shapes.Count
            ChangeAllSubShapes ActivePresentation.Slides(j).Shapes(k), languageID
        Next k
    Next j
End Sub
Sub ChangeProofingLanguageToGerman()
    Dim j, k As Integer
    Dim languageID As MsoLanguageID

    'Set this to your preferred language
    languageID = msoLanguageIDGerman

    For j = 1 To ActivePresentation.Slides.Count
        For k = 1 To ActivePresentation.Slides(j).Shapes.Count
            ChangeAllSubShapes ActivePresentation.Slides(j).Shapes(k), languageID
        Next k
    Next j
End Sub
Sub ChangeAllSubShapes(targetShape As Shape, languageID As MsoLanguageID)
    Dim i As Integer

    If targetShape.HasTextFrame Then
        targetShape.TextFrame.TextRange.languageID = languageID
    End If

    Select Case targetShape.Type
        Case msoGroup, msoSmartArt
            For i = 1 To targetShape.GroupItems.Count
                ChangeAllSubShapes targetShape.GroupItems.Item(i), languageID
            Next i
    End Select
End Sub

Kommentare:

  1. das finde ich schon sehr perfektionistisch ;)
    da im präsentationsmodus die "Fremdwörter" ohnehin nicht unterstrichen sind, wäre ich bisher nie daraufgekommen mir die Arbeit anzutun, die Sprache für die Rechtschreibprüfung zu ändern ;)

    AntwortenLöschen
    Antworten
    1. Naja, wenn man die Rechtschreibprüfung doch als sinnvoll erachtet und nicht darauf verzichten will, muss man halt nach Perfektion streben :-)

      Löschen