web-dev-qa-db-ja.com

すべてのPowerPointスライドの言語を一度に変更する方法を教えてください。

このスレッドはかなり古いですが、マイクロソフトは私が知っている解決策を提供していません。私はMacユーザーに別のアプローチを提案する:Keynoteであなたのプレゼンテーションを開き、スペルの言語を変え、そしておそらくあなたのプレゼンテーション全体を編集し、そしてそれをPowerPointにエクスポートする。

150
liamzebedee

全体 PowerPointの言語を簡単に変更するには、表示タブを開き、アウトライン表示を選択します。

今すぐ押す

  • Ctrl+A すべて選択します。
  • ツール言語→設定する言語を選択してください。

同様に、フォント、色など、他のものも変更できます。もちろん、スライドマスターを変更することでこれを行うことができますが、多くの編集者がいるプレゼンテーションには、 'ハード'フォーマットセットがたくさんあります。基礎となるマスターから逸脱し、一貫性を保つために再設定が必要です。個々のスライドをマスタースタイルにリセットすることもできますが、プレースホルダも移動する可能性があります。これは、状況によっては望ましくない場合があります。

PowerPoint 2013

  • 表示アウトライン→(左メニューの)すべてのスライドを選択 Ctrl+A
  • レビュー言語校正言語の設定...→設定する言語を選択してください。

私は - PowerPoint 再起動が必要でした。おそらく私も変更したからでしょう編集言語

  • レビュー言語校正言語の設定...言語設定編集言語の選択
162
Mastergalen

PowerPoint 2010 を使用して[アウトライン]メニューを開きました -

outline tab

すべてのテキストを選択(Ctrl + A)して言語メニューを開き、校正言語を設定します

language option

そしてそれはうまくいった!

言語メニューは[レビュー]リボンタブ([スライドショー]タブの後、スクリーンショットには表示されません)にあります。

34
liamzebedee

既存の回答は、アウトラインにあるテキストに対して機能します。残念ながら、私の場合、これは図、表などを含むテキストの大部分をカバーしていませんでした.

このマクロは私のために問題を解決しました:

 Sub ChangeProofingLanguageToEnglish()
    Dim j, k, m, scount, fcount, gcount 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 = msoLanguageIDEnglishUS
            End If
            If ActivePresentation.Slides(j).Shapes(k).Type = msoGroup Then
                gcount = ActivePresentation.Slides(j).Shapes(k).GroupItems.Count
                For m = 1 To gcount
                    If ActivePresentation.Slides(j).Shapes(k).GroupItems.Item(m).HasTextFrame Then
                    ActivePresentation.Slides(j).Shapes(k).GroupItems.Item(m) _
                    .TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUS
            End If
                Next m
            End If
        Next k
    Next j
End Sub

上記のマクロで使用されている "msoLanguageIDEnglishUS"は任意の言語に置き換えることができます。言語の完全なリストはこの記事の にあります

(元のマクロ をここに投稿したGanesh Kumarに敬意を表します。 最初のレベルの形状のグループ化のサポートを追加しました。他のグループを含む、など)

22
Inigo

私は Inigoの答え を改良して、すべての項目を希望の言語に変更する再帰バージョンを提供しました。

このバージョンは再帰的にグループ型である各形状を調査します。いくつかの実験ではmsoGroupmsoSmartArtがグループタイプであることを示唆しています - テキストオブジェクトを保持できる他のタイプの形状を見つけた場合はそのリストに追加してください。

Sub ChangeProofingLanguageToEnglish()
    Dim j As Long, k As Long
    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 ChangeAllSubShapes(targetShape As shape, languageID As MsoLanguageID)
    Dim i As Long

    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
19
Duncan Jones

Inigo、Duncan、Maria、DomDevの回答に基づいて、これは図形、テーブル、グループ、SmartArt、現在および将来的に機能します。

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

    'Set this to your preferred language
    languageID = msoLanguageIDFrench

    'Loop all the slides in the document, and change the language
    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

    'Loop all the master slides, and change the language
    For j = 1 To ActivePresentation.SlideMaster.CustomLayouts.Count
        For k = 1 To ActivePresentation.SlideMaster.CustomLayouts(j).Shapes.Count
            ChangeAllSubShapes ActivePresentation.SlideMaster.CustomLayouts(j).Shapes(k), languageID
        Next k
    Next j

    'Change the default presentation language, so that all new slides respect the new language
    ActivePresentation.DefaultLanguageID = languageID
End Sub

Sub ChangeAllSubShapes(targetShape As Shape, languageID As MsoLanguageID)
    Dim i As Integer, r As Integer, c As Integer

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

    If targetShape.HasTable Then
        For r = 1 To targetShape.Table.Rows.Count
            For c = 1 To targetShape.Table.Columns.Count
                targetShape.Table.Cell(r, c).Shape.TextFrame.TextRange.languageID = languageID
            Next
        Next
    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
9
tricasse

Duncanのバージョンはテーブル以外のすべてに適しています。私はテーブルでも動作するように思われる別のコードを見つけました: https://stackoverflow.com/questions/4735765/PowerPoint-2007-set-language-on-tables-charts-etc-that - テキスト

Public Sub changeLanguage()
    On Error Resume Next
    Dim gi As GroupShapes '<-this was added. used below
    'lang = "English"
    lang = "Norwegian"
    'Determine language selected
    If lang = "English" Then
        lang = msoLanguageIDEnglishUK
    ElseIf lang = "Norwegian" Then
        lang = msoLanguageIDNorwegianBokmol
    End If
    '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
                    Next
                Next
            Else
                Set gi = oShape.GroupItems
                'Check if it is a group of shapes
                If Not gi Is Nothing Then
                    If oShape.GroupItems.Count > 0 Then
                        For i = 0 To oShape.GroupItems.Count - 1
                            oShape.GroupItems(i).TextFrame.TextRange.LanguageID = lang
                        Next
                    End If
                'it's none of the above, it's just a simple shape, change the language ID
                Else
                    oShape.TextFrame.TextRange.LanguageID = lang
                End If
            End If
        Next
    Next End Sub
6
Maria

Mastergalen が提供する回答に加えて、新たにタイプされたテキストに関するコメントに対処するために:

気が付くと思いますが、新しいテキストを入力するたびにその言語が自動的に変更されるため(非常に面倒です)、PowerPointの現在のデフォルト言語を変更する必要があります。

  • powerPointウィンドウがアクティブウィンドウであることを確認してください
  • Windows Taskbar(はい、実際にはPowerPointにはありません)で、Language barが表示されているかどうかを確認してください。
    • そうでなければControl Panel > Region and Language > Keyboards and Languagesに行きます。 Change keybords...をクリックし、Language barタブに切り替えてDocked in the taskbarオプションをチェックしてください。 (これはWin7からのものなので、他のバージョンでは少し異なるかもしれません)。
  • 今すぐキーアクション - タスクバーのLanguage barで、言語コードをクリックしてENに切り替えます(現在PowerPointで英語を使用する場合)。今後、PowerPointのすべての新しいテキストは選択された言語になります:-)
  • あなたがあなたの元の言語で書きたいならば、ただそれを元に戻してください。
4
Gas

私は自分自身のために2014年にアドインを作成しました。これはPowerPoint 2016でも問題なく動作します。 https://github.com/wobba/officeaddin/releases/tag/v1.0.1

それは使用されている言語をスキャンし、あなたが繰り返しながら、一度にすべてを変更することを可能にします。

enter image description here

3
Mikael Svenson