尽管该线程已经很老了,但是Microsoft没有提供我所知道的解决方案。我建议Mac用户使用另一种方法:在Keynote中打开演示文稿,更改拼写语言,并可能编辑整个演示文稿,然后将其导出到PowerPoint。
尽管该线程已经很老了,但是Microsoft没有提供我所知道的解决方案。我建议Mac用户使用另一种方法:在Keynote中打开演示文稿,更改拼写语言,并可能编辑整个演示文稿,然后将其导出到PowerPoint。
Answers:
若要轻松更改整个 PowerPoint 的语言,请打开“ 视图”选项卡,然后选择“ 大纲”视图。
现在按
同样,在选择了所有内容后,您可以更改字体,颜色等其他内容。尽管当然,在很多情况下,通过更改幻灯片母版可以更好地完成此操作,但是拥有许多编辑者的演示文稿可能会有很多“硬”格式设置,偏离基础主机,需要重新设置以保持一致。您也可以将单个幻灯片重置为母版样式,但这也可能导致占位符也移动,这在某些情况下可能是不希望的。
对我来说- 需要重启 PowerPoint 。可能是因为我也更改了编辑语言:
使用Powerpoint 2010,我打开了“大纲”菜单-
选择所有文本(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”可以用任何所需的语言替换。完整的语言列表可以在本文中找到
(贷记给Ganesh Kumar,他在此处发布了原始宏。我添加了对形状分组第一级的支持。为了进一步改进形状,可以使该宏递归以查找包含其他组的组,等等。)
我改进了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
Compile error: Method or data member not found
基于Inigo,Duncan,Maria和DomDev的答案,此方法适用于现在和将来的形状,表格,组,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
Compile error: Method or data member not found
。有什么建议的解决方案吗?似乎突出了.DefaultLanguageID
。
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
除了Mastergalen提供的答案并解决有关新输入文字的评论外:
如果您会注意到,只要您开始输入新文本(非常烦人),该语言就会自动变回原来的样子,您必须更改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中的所有新文本将使用所选的语言:-)En
任务栏,然后选择“ Settings..
安装的语言”,将显示德语(DE)和英语(En),如果展开英语,则会Keyboards
列出,展开“键盘”,并添加您喜欢的德语键盘,可能会删除英文也。我没有尝试过,但应该在理论上起作用;-)
我在2014年为自己做了一个外接程序,在PowerPoint 2016中仍然可以正常使用。https://github.com/wobba/officeaddin/releases/tag/v1.0.1
它会扫描使用的语言,并允许您一次更改所有内容,并进行循环。