Как изменить язык всех слайдов Powerpoint одновременно?
Я хочу изменить язык пробной версии всех моих слайдов в Powerpoint. Я пытался установить язык через меню “Языковые настройки”, но это меняет его только для новых Powerpoint.
Я хочу изменить язык пробной версии всех моих слайдов в Powerpoint. Я пытался установить язык через меню “Языковые настройки”, но это меняет его только для новых Powerpoint.
Чтобы изменить язык entire PowerPoint легко, откройте вкладку View и выберите вид Outline.
Теперь нажмите
Аналогичным образом, пока у вас есть все, что вы выбрали, вы можете изменить другие вещи, такие как шрифты, цвета и т.д. Хотя, конечно, во многих случаях это лучше сделать путем изменения мастера слайдов, презентация, в которой было много редакторов, может иметь много “жестких” настроек форматирования, которые отклоняются от основного мастера и нуждаются в переустановке, чтобы быть последовательной. Можно также сбросить отдельные слайды в стиль мастера, но это может привести и к перемещению плейсхолдеров, что в некоторых ситуациях может быть нежелательно.
Что касается меня - понадобилось PowerPoint рестарт. Наверное, потому что я также изменил Редактирование языка :
С помощью Powerpoint 2010 я открыл меню Outline -
Выбрал весь текст (Ctrl+A), открыл языковое меню и установил свой язык проверки
И это сработало!
Языковое меню находится на вкладке “Лента обозрения” (после вкладки “Слайд-шоу” и не отображается на скриншоте).
Существующие ответы работают с текстом, который присутствует в наброске. К сожалению, в моем случае это не охватило значительную часть текста, включая рисунки, таблицы и т.д.
Данный макрос решил для меня проблему:
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”, который используется в вышеуказанном макросе, может быть заменен на любой желаемый язык. Полный список языков можно найти в этой статье
(Кредит идет Ганеш Кумар, который разместил оригинальный макрос здесь . Я добавил поддержку первого уровня группировки форм. Для его дальнейшего улучшения макрос можно сделать рекурсивным для поиска групп, которые содержат другие группы и т.д.).
Я улучшил Inigo’s answer для предоставления рекурсивной версии, которая изменяет все элементы на нужный язык.
Эта версия будет рекурсивно исследовать каждую фигуру, которая является групповым типом. Некоторые эксперименты показывают, что 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
Основываясь на ответах Иниго, Дункана, Марии и Домдева, это работает для форм, таблиц, групп, 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
```.
Версия Дункана хорошо работает для всего, кроме столов. Я нашел еще один код, который, кажется, тоже работает с таблицами: 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
В дополнение к ответу, предоставленному Mastergalen и комментариям относительно нового текста:
Если вы заметили, что язык будет автоматически меняться обратно всякий раз, когда вы начинаете вводить новый текст (что очень раздражает), вы должны изменить текущий язык по умолчанию для PowerPoint:
Windows Taskbar
(да, на самом деле не в PowerPoint), проверьте, если Language bar
видно, Control Panel > Region and Language > Keyboards and Languages
. Нажмите на Change keybords...
, перейдите на вкладку Language bar
и установите флажок Docked in the taskbar
. Language bar
на панели задач, кликните на код языка и переключитесь на EN (если вы хотите в настоящее время использовать английский язык в PowerPoint). Отныне весь новый текст в PowerPoint будет на выбранном языке :-) Я сделал дополнение еще в 2014 году для себя, который до сих пор работает нормально в PowerPoint 2016. https://github.com/wobba/officeaddin/releases/tag/v1.0.1
Он сканирует на наличие используемых языков и позволяет менять все сразу, перебирая.