Изменить язык проверки правописания в презентации PowerPoint


42

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

Есть лучший способ сделать это?

Версия PowerPoint, которую я установил, - 2002 SP3.


Не могу добавить ответ (несмотря на наличие достаточного количества повторений). Для пользователей Mac: macscripter.net/viewtopic.php?id=38622 предоставляет удивительный сценарий Apple, который можно изменить для многих целей.
Этьен Лоу-Декари

Вот суть вышеупомянутого яблочного сценария: gist.github.com/4440395
Этьен Лоу-Декари,

Ответы:


35

Я знаю, что ответ уже принят (который я дал +1, так как он работает и хорошо написан), но для некоторых людей идея создания, сохранения, использования макроса может быть слишком страшной (или у них могут быть настройки безопасности в место, которое делает это трудно достичь). Поэтому для этого проще использовать обычные встроенные функции. Хитрость заключается в том, чтобы иметь возможность выбирать все объекты на всех слайдах одновременно, а не на самих слайдах, и это легко достигается в представлении «Контур» (к сожалению, недоиспользуемая функция, но отлично подходит для реорганизации слайд-колоды, продвижения и понижения целые куски, например, маркеры> новые слайды или наоборот).

У меня нет PowerPoint 2002 («XP»), поэтому я не уверен, что вам нужно следовать инструкциям для 2000 или 2003 года, поэтому я расскажу оба здесь:

  • В PP 2000 : перейдите к представлению структуры, которое является вторым значком слева внизу слева на экране (выглядит как линии с отступами).
  • В PP 2003 и далее : перейдите в «нормальный» вид (трехпанельное расположение) и в верхней части навигатора слайдов выберите «контур», а не «слайды»

В более старых версиях, убедитесь , что у вас есть Излагая панель инструментов видна ( View> Toolbars> Outlining) и нажмите на Expand allкнопку (более поздние версии позволяют получить на это через правый клик).

  • Ctrl-A выбрать все.
  • Tools>> LanguageВыберите свой язык для установки.
  • (с Powerpoint 2013) REVIEW> Language> Набор Правописание языка

Дело сделано.

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


Просто короткое примечание: возможно, выделите жирным шрифтом следующее предложение, чтобы решение было сразу ясным: «Хитрость заключается в возможности выделить все объекты на всех слайдах одновременно, а не на самих слайдах, и это легко достигается в общих чертах »
Рабарберски

2
Спасибо AdamV, отличный ответ! Однако проблема этого подхода заключается в том, что в зависимости от того, как текстовые поля были добавлены на слайд, они могут не отображаться в виде структуры. Это было практически во всех случаях на презентации, которую я должен был исправить.
Леонардо

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

Для меня это работало только для существующего текста в PowerPoint 2010. Для вновь добавленного текста язык все равно будет меняться в некоторых случаях.
Питер

Это, безусловно, самый чистый способ борьбы с этим. Работает и в версии 2013 года.
GoTTimw

18

Эта тема содержит ответ, который работал для меня.

Шаги, которые я следовал, были:

  1. Создайте новый макрос:
    1.1. Перейдите в Инструменты, Макрос, Редактор Visual Basic.
    1.2. Вставьте новый пустой модуль, выбрав Вставить, Модуль.
  2. Вставьте этот код в правую панель и сохраните макрос:

    Option Explicit  
    Public Sub ChangeSpellCheckingLanguage()  
        Dim j As Integer, k As Integer, scount As Integer, fcount 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 = msoLanguageIDEnglishAUS
                End If
            Next k
        Next j
    End Sub
    

    msoLanguageIDEnglishAUSможно заменить на любой нужный язык. Полный список языков можно найти здесь .

  3. Выполните макрос (нажав F5 в редакторе или выбрав Инструменты, Макрос, Макросы, ChangeSpellCheckingLanguage и нажав Выполнить).

После этого все текстовые элементы в презентации будут иметь новый язык правописания.


1
Этот код не повлияет на Shapes в группах. Более общий код выложен на сайте superuser.com/a/1119420/245595
sancho.s Восстановите Монику

3

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

Я загрузил его на свой веб-сайт: PowerPoint LanguageFixer

Он заботится о:

  • установка языка по умолчанию
  • все формы с текстовыми фреймами
  • текстовые фреймы в сгруппированных формах (насколько это возможно)
  • текст в таблицах
  • материал на слайде / заметке / раздаточном материале

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


1

Вот два варианта в зависимости от вашей ситуации:


Ситуация 1: Исходная копия Office была установлена ​​с установочного носителя на канадском французском языке.

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

Единственное исправление - удалить канадско-французскую версию и установить ее с установочного носителя на английском языке или скопировать / вставить всю презентацию в новый документ и переформатировать.

,


Ситуация 2: Все кажется английским, но в некоторых случаях появляются иностранные языки.

В этой ситуации вот инструкции по ремонту для Office 2002:

  1. Нажмите меню Пуск
  2. Укажите на Программы
  3. Укажите на Microsoft Office Tools
  4. Нажмите Настройки языка Microsoft Office XP.
  5. Перейдите на вкладку «Включенные языки».
  6. Перейти к версии Microsoft Office по умолчанию
  7. Выберите язык, который вы хотите
  8. Нажмите ОК. Появится сообщение о том, какие изменения будут внесены.
  9. Нажмите Продолжить

Надеюсь, это поможет.


Спасибо за Ваш ответ! Это была не та ситуация. То, что происходит, - то, что каждое текстовое поле может быть установлено на другой язык для проверки орфографии, и в этом конкретном сценарии все элементы имели неправильный язык. Язык по умолчанию в системе (и при установке в офисе) - английский.
Леонардо

0

У меня были те же проблемы с презентациями, сделанными с немецким PowerPoint и переводом вручную на английский. Проблема в том, что языковая настройка - это, по сути, форматирование, которое применяется к каждому элементу текстового поля самостоятельно.

Я не знаю ни одного удобного решения - мне приходилось либо учитывать несоответствие, либо вручную изменять «формат» языка каждого отдельного текстового поля на каждом слайде. Не весело, так что в основном я живу с этим.


0

Код, опубликованный Леонардо , прост и в целом эффективен, но он не повлияет Shapeна группы. Более общий код использует рекурсию , чтобы иметь дело с этим случае тоже (слегка измененный от здесь , который находится в том же потоке, что и код Леонардо):

Private Function ChangeLangOfAllText_caller()
    'ChangeLangOfAllText (msoLanguageIDEnglishUS)
    ChangeLangOfAllText (msoLanguageIDSpanishArgentina)
End Function

Private Function ChangeLangOfAllText(ByVal LangID As Long)
    Dim MySlide As Slide
    Dim MyShape As Shape
    Dim MyD As Design
    Dim MyHeaderFooter As HeaderFooter
    Dim i, nbs As Integer
    ''''' First deal with the master slides
    For Each MyD In ActivePresentation.Designs
        For Each MyShape In MyD.SlideMaster.Shapes
            ProcessShapes MyShape, LangID
        Next MyShape
    Next MyD
    ''''' Now deal with the slides
    ' Enable this for debugging
    'Debug.Print "File " & ActivePresentation.Name & _
      ": working with " & ActivePresentation.Slides.Count & " slides"
    For Each MySlide In ActivePresentation.Slides
        ' Enable this for debugging
        'Debug.Print " Slide index " & MySlide.SlideIndex & ", Slide number " & MySlide.SlideNumber & _
          ": working with " & MySlide.Shapes.Count & " shapes"
        For Each MyShape In MySlide.Shapes
            ProcessShapes MyShape, LangID
        Next MyShape
        ''''' Now deal with the Notes
        For Each MyShape In MySlide.NotesPage.Shapes
            ProcessShapes MyShape, LangID
        Next MyShape
        ''''' Now deal with the master ' doesn't appear to work, have to try something else
        For Each MyShape In MySlide.Master.Shapes
            ProcessShapes MyShape, LangID
        Next MyShape
    Next MySlide
End Function

Private Function ProcessShapes(MyShape As Shape, ByVal LangID As Long)
    Dim i As Integer
    If ((MyShape.Type = msoGroup) Or (MyShape.Type = msoTable)) Then
        On Error Resume Next
        For i = 1 To MyShape.GroupItems.Count
            ''' The trick is to recurse!
            ProcessShapes MyShape.GroupItems.Item(i), LangID
        Next i
    Else
        ChangeLang MyShape, LangID
    End If
End Function

Private Function ChangeLang(MyShape As Shape, ByVal LangID As Long)
    Dim i As Integer
    If (MyShape.HasTextFrame) Then
        ' Enable this for debugging
        'Debug.Print " Shape " & MyShape.ZOrderPosition & ", type: " & MyShape.Type & _
          ", has text frame: " & MyShape.HasTextFrame & ", has text: " & MyShape.TextFrame.HasText & _
          ", alt. text: " & MyShape.AlternativeText
        MyShape.TextFrame.TextRange.LanguageID = LangID
    End If
End Function
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.