我收到了一个PowerPoint演示文稿,其中包含许多幻灯片,每个幻灯片都有许多文本框。尽管演示文稿是用英语编写的,但是拼写检查的语言设置为加拿大法语。我试图将语言更改为英语,但是即使我选择了所有幻灯片并在“语言”对话框中选择了一个新元素,文本框的语言也保持不变。因此,我必须依次滑动幻灯片,选择文本框,然后分别更改语言。
有一个更好的方法吗?
我安装的PowerPoint版本是2002 SP3。
我收到了一个PowerPoint演示文稿,其中包含许多幻灯片,每个幻灯片都有许多文本框。尽管演示文稿是用英语编写的,但是拼写检查的语言设置为加拿大法语。我试图将语言更改为英语,但是即使我选择了所有幻灯片并在“语言”对话框中选择了一个新元素,文本框的语言也保持不变。因此,我必须依次滑动幻灯片,选择文本框,然后分别更改语言。
有一个更好的方法吗?
我安装的PowerPoint版本是2002 SP3。
Answers:
我知道答案已经被接受了(因为它可以工作并且写得很好,所以我给+1了),但是对于某些人来说,创建,保存,使用宏的想法可能太吓人了(或者他们可能在其中设置了安全性设置)难以实现的地方)。因此,一个更简单的解决方案是使用常规的内置功能来执行此操作。诀窍是能够一次选择所有幻灯片上的所有对象,而不是幻灯片本身,这很容易在“大纲”视图中实现(这是一个未充分使用的功能,但是非常适合重组幻灯片组,升级和降级)整块,例如,项目符号>新幻灯片,反之亦然)。
我没有PowerPoint 2002(“ XP”),所以不确定您是否需要按照2000或2003的说明进行操作,因此在这里介绍了这两者:
在旧版本中,请确保您有大纲工具栏可见(View> Toolbars> Outlining),然后单击Expand all按钮(以后的版本让你通过右键点击这个搞定)。
任务完成。
同样,当您选择了所有内容后,您可以更改字体,颜色等其他内容。尽管当然在很多情况下,通过更改幻灯片母版可以更好地完成此操作,但是拥有许多编辑者的演示文稿可能会有很多“硬”格式设置,偏离基础主机,需要重新设置以保持一致。您也可以将单个幻灯片重置为母版样式,但这也可能导致占位符也移动,这在某些情况下可能是不希望的。
该主题包含对我有用的答案。
我遵循的步骤是:
将此代码粘贴在右侧面板上并保存宏:
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
可以用任何所需的语言替换。完整的语言列表可以在这里找到。
执行宏(通过在编辑器中按F5,或选择“工具”,“宏”,“宏”,“ ChangeSpellCheckingLanguage”,然后单击“运行”)。
之后,演示文稿中的所有文本元素将具有新的拼写语言。
Shape
分组中的。更通用的代码发布在superuser.com/a/1119420/245595
经过多次演示后,我手工完成或使用了一次性宏,然后我终于破产了,并将其制作为适当的PowerPoint加载项。
我已经将其上传到我的网站:PowerPoint LanguageFixer
它负责:
只需将文本框之一设置为所需的语言,然后选择它并单击按钮即可。
根据您的情况,有两种选择:
情况1:Office的原始副本是从基于加拿大法语的安装媒体安装的。
您将能够将默认语言设置为英语,但是核心功能将使用安装介质的本地语言。
唯一的解决方法是卸载加拿大法语版本,然后从基于英语的安装媒体进行安装,或者将整个演示文稿复制/粘贴到新文档中并重新设置格式。
。
情况2:一切似乎都是英语,但在有限的情况下会出现外语。
在这种情况下,以下是Office 2002的修复说明:
我希望这有帮助。
使用德语PowerPoint进行演示并被手动翻译成英语时,我也遇到了同样的问题。问题在于,语言设置本质上是一种格式,只能单独应用于每个文本框元素。
我不知道有任何方便的解决方案-我不得不忍受不匹配或手动更改每张幻灯片上每个单独文本框的语言“格式”。不好玩,所以大部分时间我都忍受了。
莱昂纳多(Leonardo)发布的代码简单且通常有效,但不会影响Shape
s中的分组。更通用的代码也使用递归来处理这种情况(从此处稍作更改,与Leonardo的代码在同一线程中):
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