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

152

Хотя эта ветка довольно старая, Microsoft не предоставила решения, о котором я знаю. Я предлагаю другой подход для пользователей Mac: откройте свою презентацию в Keynote, измените язык правописания и, возможно, отредактируйте всю презентацию, а затем экспортируйте ее в PowerPoint.

liamzebedee
источник
1
Кажется, что новейшая версия PowerPoint особенно глючит в этом отношении. У меня есть текстовое поле, в котором я изменил язык всего текста на язык A. (Язык по умолчанию - B.) Поэтому, когда я начинаю печатать в этом текстовом поле, язык автоматически меняется на B. Я подумал, что, возможно, изменил язык по умолчанию. язык помогает (перепробовал все остальное) но нет. Теперь язык по умолчанию - A, язык всего другого текста в текстовом поле - A (и я перезапустил PP), но весь новый текст по-прежнему отображается как B. Так что мой единственный оставшийся вопрос: есть ли способ переключения проверки вообще выключен?
lebatsnok
Да, есть способ проверки правописания: support.microsoft.com/en-us/help/937422/… - решил мою проблему!
lebatsnok

Ответы:

166

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

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

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

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

PowerPoint 2013

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

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

  • ОбзорЯзыкУстановить язык проверки ...Языковые настройкиВыбрать языки редактирования .
Mastergalen
источник
31
Спасибо за ответ, но после смены языка вновь напечатанный текст остается на прежнем языке (по умолчанию). Более того, если вы перейдете к мастер-слайдам, выберите слайд , и вы заметите, что язык в языковой панели по-прежнему является языком по умолчанию, а меню для его изменения неактивно. Я схожу с ума от того, что Microsoft так долго не решала эту проблему.
Эндрю
1
Потрясающие! Хотя и не идеально, это, безусловно, помогает. Я согласен с @Endrju, почему это еще не исправлено ?!
Майк
1
Для
справки:
2
Powerpoint просто ужасно плох, не так ли? Я действительно скучаю по открытому офису, когда у меня возникают подобные проблемы. Я вернусь, чтобы открыть офис, как только они поддержат сохранение в видео.
Мяггард
2
Основным ограничением этого является то, что если кто-то в своей бесконечной мудрости создал собственное текстовое поле вместо использования правильных макетов «Заголовок + Контент», это просто не сработает.
Лилиенталь
34

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

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

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

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

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

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

liamzebedee
источник
4
Работает только для одного слайда
Хельге Кляйн
9
Это работает для основных макетов слайдов. Это не изменит язык текста внутри текстовых полей или вложенных в другие фигуры.
Дункан Джонс
Работает на Office 2007 тоже.
Альфредо Осорио
Работал на Office Mac тоже.
Джим Маккит
23

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

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

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

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

Иниго
источник
+1 Хорошее начало. Смотрите мой ответ для полностью рекурсивной версии, основанной на этом ответе.
Дункан Джонс
20

Я улучшил ответ 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
Дункан Джонс
источник
1
При запуске этого в PowerPoint 16.10 на OSX, я получаю:Compile error: Method or data member not found
Этьен Лоу-Декарни
10

Основываясь на ответах Иниго, Дункана, Марии и ДомДева, это работает для фигур, таблиц, групп, 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
tricasse
источник
Что касается других решений, о том, когда работает это в PowerPoint 16.10 на OSX, я получаю: Compile error: Method or data member not found. Любые предлагаемые решения? Кажется, чтобы выделить .DefaultLanguageID.
Этьен Лоу-Декари
@ EtienneLow-Décarie: API мог измениться в PowerPoint 16; У меня его нет, поэтому я не могу проверить, извините.
Трикасс
У меня работает в Powerpoint 2016 на Windows 7 (точная версия MS Office 16.0.11029.20108)
Кристофер К.
Отлично! Единственное улучшение, которое я могу придумать, это изменение языка для разделов заметок к слайду :)
Маркус Мангельсдорф
7

Версия 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
Мария
источник
5

В дополнение к ответу, предоставленному 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 будет на выбранном языке :-)
  • если вы хотите написать на своем родном языке, просто измените его обратно.
газ
источник
1
О Боже, с чего бы это так ?! Спасибо, сработало отлично.
Тибо Д.
1
Именно так! также следует добавить к принятому ответу.
М. Абдельхафид
1
Но это также меняет раскладку клавиатуры, не так ли? ... Я хочу набирать текст на английском языке, но я действительно хочу сохранить раскладку на немецком языке ...
Йоханнес С.
2
@JohannesS. Если вы щелкнете правой кнопкой мыши Enна панели задач и выберете, Settings..вы увидите на Установленных языках немецкий (DE) и английский (En), если вы развернете английский, там будет Keyboardsуказан список, раскройте Клавиатуры и добавьте предпочитаемую немецкую клавиатуру, возможно, удалите английскую. также. Я не пробовал, но должно работать теоретически ;-)
Газ
Подождите, поэтому мне нужно изменить язык клавиатуры, если я хочу использовать другой язык проверки? Это глупо.
Матей Рачинский
3

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

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

введите описание изображения здесь

Микаэль Свенсон
источник