blu3scr33n
Goto Top

Power Point 2007 - Sprache via VBA Makro auf US-Englisch umstellen

Hallo liebe Administratoren,

ich habe ein Problem in Power Point 2007 und leider nur sehr rudimentäre Ahnung von VBA.
Einige Präsentationen muss ich ins Englische übersetzen. Jetzt ist es sehr umständlich und zeitaufwendig die Standardsprache immer wieder manuell für jede Folie einzeln umzustellen.
Ich habe mich auch schon nach anderen Möglichkeiten als Makros umgeschaut. Diese führten allerdings allesamt nicht zum erhofften Ergebnis.
Laut Microsoft ist dieses mit Hilfe eines VBA-Makros möglich:
Support Microsoft
Wenn ich dieses Makro copy und paste und dann versuche auszuführen, dann sagt er mir:
Fehler beim Kompilieren
Syntaxfehler
und verweist auf folgende beide Zeilen (die er auch in rot makiert hat):
If shp.TextFrame.TextRange.Text = '' Then
shp.TextFrame.TextRange.Text = '[PLACEHOLDER TEXT]'

Was kann ich tun, damit dieses Makro bei mir funktioniert.

Ich bin Dankbar für alle Tipps und Ratschläge.

Beste Grüße,

Blu3Scr33n

Content-Key: 172925

Url: https://administrator.de/contentid/172925

Printed on: April 20, 2024 at 02:04 o'clock

Member: Biber
Biber Sep 11, 2011 at 13:52:23 (UTC)
Goto Top
Moin Blu3Scr33n,

eines meiner neuesten Hobbys sind die Anführungszeichen - da bin ich zumindest sensibilisiert.

Nimm doch mal probeweise statt der halben Anführungszeichen (== quotes == ') die im deutschen Schrift-Sprachraum üblichen (== double quotes == ").

E.g. streiche:
If shp.TextFrame.TextRange.Text = '' Then
shp.TextFrame.TextRange.Text = '[PLACEHOLDER TEXT]'

Setze:
If shp.TextFrame.TextRange.Text = '"" Then
shp.TextFrame.TextRange.Text = "[PLACEHOLDER TEXT]"


Grüße
Biber
Member: Blu3Scr33n
Blu3Scr33n Sep 11, 2011 at 19:17:38 (UTC)
Goto Top
Hallo Biber,

danke. Ich werds morgen ausprobieren. Mal schauen, obs hilft.
Dir schonmal einen schönen Start in die Woche. Auf das der Montag nicht allzu schlimm werden wird face-wink

Grüße aus dem Rest des Wochendes,

Blu3Scr33n
Member: Blu3Scr33n
Blu3Scr33n Sep 12, 2011 at 09:58:57 (UTC)
Goto Top
Hallo Biber,

danke für die Anführungszeichen. Dadurch sind schonmal die Syntaxfehler verschwunden.
Beim Ausführen des Makros gibt er mir auch die beiden Textboxen aus.
Allerdings ändert sich nur die angezeigte Standardsprache (unten links; rechts neben der Seitenanzahl)
Mein code sieht jetzt folgendermaßen aus:
Sub Lingo()
    On Error Resume Next

    ' Declare variables.  
    Dim sld As Slide
    Dim shp As Shape
    Dim colShapes As New Collection
    Dim p As TextRange
    Dim r As TextRange

    ' Loop through all the slides in the presentation.  
    For Each sld In ActivePresentation.Slides
        ' Loop through each shape on each slide.  
        For Each shp In sld.Shapes
            colShapes.Add shp
            CheckGroups shp, colShapes
        Next

        For Each shp In sld.NotesPage.Shapes
            colShapes.Add shp
            If shp.HasTextFrame Then
                If shp.TextFrame.TextRange.Text = "" Then  
                    shp.TextFrame.TextRange.Text = "[PLACEHOLDER TEXT]"  
                End If
            End If
        Next
    Next

    For Each shp In ActivePresentation.SlideMaster.Shapes
        colShapes.Add shp
    Next

    For Each shp In ActivePresentation.TitleMaster.Shapes
        colShapes.Add shp
    Next

    For Each shp In ActivePresentation.NotesMaster.Shapes
        colShapes.Add shp
    Next

    MsgBox "There are [TOTAL]" & colShapes.Count & " shapes to be scanned."  

    For Each shp In colShapes
        If shp.TextFrame.TextRange.LanguageID = 1031 Then
            Debug.Print shp.Name
        End If
        shp.TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUS
        If shp.TextFrame.TextRange.Text = "[PLACEHOLDER TEXT]" Then  
            shp.TextFrame.TextRange.Text = ""  
        End If
    Next

    MsgBox "Done!"  

    ActivePresentation.DefaultLanguageID = msoLanguageIDEnglishUS
End Sub

Sub CheckGroups(shp As Shape, colShapes As Collection)
    On Error Resume Next

    If shp.GroupItems.Count > 0 Then
        For Each g In shp.GroupItems
            colShapes.Add g
        Next
    End If
End Sub

Die Umstellung der Standarsprache kann ich auch per Hand machen. Was ich brauche ist ein Makro, dass mir alle Textblöcke (und Texte in den Formen) auf US-English umstellt.
Im Netz habe ich auch noch einen anderen Ansatz gefunden. Der schafft es allerdings nur die normalen Textblöcke zu ändern und nicht die Texte, die in Formen eingelassen sind (Sprich: in Kreise, etc.) Dieser wirkt auf mich allerdings noch sehr unfertig.
Sub Englisch()

   ' Declare variables.  
   Dim sld As Slide
   Dim shp As Shape

   ' Loop through all the slides in the presentation.  
   For Each sld In ActivePresentation.Slides
        
       ' Loop through each shape on each slide.  
       For Each shp In sld.Shapes
            
           ' If the Shape is a text box...  
           If shp.Type = msoTextBox Or msoPlaceholder Then
           If shp.HasTextFrame Then
                
               ' ...then change the language to US English.  
               ' NOTE: To change the language ID to another language,  
               ' change the msoLanguageID value here to a  
               ' different language.  
               shp.TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUS
            
           End If
           End If
       Next
   Next
End Sub

Ich hoffe ihr könnt mir weiterhelfen.

Grüße,

Blu3Scr33n