40

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

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

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

6 ответов6

33

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

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

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

В более старых версиях убедитесь, что панель инструментов Outlining видима (« Просмотр» > « Панели инструментов» > « Outlining») и нажмите кнопку « Развернуть все» (более поздние версии позволяют сделать это, щелкнув правой кнопкой мыши).

  • Ctrl-A, чтобы выбрать все.
  • Инструменты > Язык > Выберите свой язык для установки.
  • (из Powerpoint 2013) ОБЗОР > Язык > Установить язык проверки

Работа выполнена.

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

17

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

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

  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 и нажав Выполнить).

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .