Как изменить язык всех слайдов Powerpoint одновременно?

Я хочу изменить язык проверки всех моих слайдов в Powerpoint. Я попытался установить язык через меню "Языковые настройки", но это только меняет его для новых точек питания.

9 ответов

Решение

Чтобы легко изменить язык всей PowerPoint, откройте вкладку " Вид " и выберите вид " Контур".

Теперь нажмите

  • Ctrl+A, чтобы выбрать все.
  • ИнструментыЯзык → Выберите язык для установки.

Точно так же, когда у вас все выбрано, вы можете изменить другие вещи, такие как шрифты, цвета и т. Д. Хотя, конечно, во многих случаях это лучше сделать, изменив мастер слайдов, презентация, в которой было много редакторов, может иметь множество "жестких" наборов форматирования, которые отклоняется от основного мастера и требует сброса, чтобы быть последовательным. Вы также можете сбросить отдельные слайды в основной стиль, но это также может привести к перемещению заполнителей, что может быть нежелательно в некоторых ситуациях.

PowerPoint 2013

  • ВидКонтур → выберите все слайды (в левом меню) с помощью Ctrl+A.
  • ОбзорЯзыкУстановить язык проверки... → Выберите язык для установки.

Что касается меня - перезагрузка PowerPoint была необходима. Возможно, потому что я также изменил язык редактирования:

  • ОбзорЯзыкУстановить язык проверки...Языковые настройкиВыбрать языки редактирования.

Используя Powerpoint 2010, я открыл меню Outline -

контурная вкладка

Выделил весь текст (Ctrl+A), открыл меню языка и установил мой язык проверки

языковая опция

И это сработало!

Языковое меню находится на вкладке "Просмотр ленты" (после вкладки "Слайд-шоу" и не отображается на снимке экрана).

Я улучшил ответ Inigo, чтобы предоставить рекурсивную версию, которая изменяет все элементы на нужный язык.

Эта версия будет рекурсивно исследовать каждую фигуру, которая является групповым типом. Некоторые эксперименты показывают, что msoGroup а также msoSmartArt типы групп - не стесняйтесь добавлять в этот список, если вы найдете другие типы фигур, которые могут содержать текстовые объекты.

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

Существующие ответы работают для текста, который присутствует в схеме. К сожалению, в моем случае это не охватывало значительную часть текста, включая рисунки, таблицы и т. Д.

Этот макрос решил проблему для меня:

 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", который используется в вышеупомянутом макросе, может быть заменен любым желаемым языком. Полный список языков можно найти в этой статье

(Благодарность принадлежит Ганешу Кумару, который разместил здесь оригинальный макрос. Я добавил поддержку первого уровня группировки фигур. Для дальнейшего улучшения этого макроса можно сделать рекурсивный поиск групп, содержащих другие группы и т. Д.)

Основываясь на ответах Иниго, Дункана, Марии и ДомДева, это работает для фигур, таблиц, групп, 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

В дополнение к ответу, предоставленному 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 будет на выбранном языке:-)
  • если вы хотите написать на своем родном языке, просто измените его обратно.

Версия Duncan хорошо работает для всех, кроме таблиц. Я нашел другой код, который, кажется, также работает с таблицами: https://stackoverflow.com/questions/4735765/powerpoint-2007-set-language-on-tables-charts-etc-that-contains-text

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

В 2014 году я сделал для себя надстройку, которая до сих пор отлично работает в PowerPoint 2016. https://github.com/wobba/officeaddin/releases/tag/v1.0.1

Он сканирует используемые языки и позволяет менять все сразу, повторяя цикл.

Если другие методы не помогают, неожиданные изменения языка также могут быть вызваны настройкой языка в мастере слайдов.

Чтобы изменить его, перейдите в «Просмотр» > «Мастер слайдов» , выберите самый родительский мастер-слайд, выберите все элементы и измените язык, как описано в принятом ответе . Изменение должно распространиться на все макеты, хотя текст-заполнитель останется на исходном языке.

Если возможно, лучшим решением будет использование шаблона, настроенного на правильном языке. Однако в зависимости от шаблонов, установленных компанией/установки офиса, или просто при попытке исправить существующий файл это может оказаться невозможным.

Другие вопросы по тегам