在PowerPoint演示文稿上更改拼写检查语言


42

我收到了一个PowerPoint演示文稿,其中包含许多幻灯片,每个幻灯片都有许多文本框。尽管演示文稿是用英语编写的,但是拼写检查的语言设置为加拿大法语。我试图将语言更改为英语,但是即使我选择了所有幻灯片并在“语言”对话框中选择了一个新元素,文本框的语言也保持不变。因此,我必须依次滑动幻灯片,选择文本框,然后分别更改语言。

有一个更好的方法吗?

我安装的PowerPoint版本是2002 SP3。


似乎无法添加答案(尽管有足够的代表)。对于在那里的Mac用户:macscripter.net/viewtopic.php?id=38622提供了一个很棒的Apple脚本,可以将其修改为多种用途。
EtienneLow-Décarie2013年

这是上面提到的applescript
-Décarie

Answers:


34

我知道答案已经被接受了(因为它可以工作并且写得很好,所以我给+1了),但是对于某些人来说,创建,保存,使用宏的想法可能太吓人了(或者他们可能在其中设置了安全性设置)难以实现的地方)。因此,一个更简单的解决方案是使用常规的内置功能来执行此操作。诀窍是能够一次选择所有幻灯片上的所有对象,而不是幻灯片本身,这很容易在“大纲”视图中实现这是一个未充分使用的功能,但是非常适合重组幻灯片组,升级和降级)整块,例如,项目符号>新幻灯片,反之亦然)。

我没有PowerPoint 2002(“ XP”),所以不确定您是否需要按照2000或2003的说明进行操作,因此在这里介绍了这两者:

  • 在PP 2000中:转到大纲视图,该视图是屏幕左下方左数第二个图标(看起来像带有缩进的线条)。
  • 在PP 2003及更高版本中:转到“普通”视图(三个窗格布局),然后在幻灯片导航器的顶部选择“大纲”,而不是“幻灯片”

在旧版本中,请确保您有大纲工具栏可见(View> Toolbars> Outlining),然后单击Expand all按钮(以后的版本让你通过右键点击这个搞定)。

  • Ctrl-A 选择全部。
  • Tools>> Language选择您要设置的语言。
  • (从PowerPoint 2013年)REVIEW> Language>设置校对语言

任务完成。

同样,当您选择了所有内容后,您可以更改字体,颜色等其他内容。尽管当然在很多情况下,通过更改幻灯片母版可以更好地完成此操作,但是拥有许多编辑者的演示文稿可能会有很多“硬”格式设置,偏离基础主机,需要重新设置以保持一致。您也可以将单个幻灯片重置为母版样式,但这也可能导致占位符也移动,这在某些情况下可能是不希望的。


简要说明一下:也许将下面的句子加粗,以使解决方案立即清晰起来:诀窍是能够一次选择所有幻灯片上的所有对象,而不是幻灯片本身,这很容易实现在“大纲”视图中”
Rabarberski

2
感谢AdamV,很好的回答!但是,这种方法的问题在于,取决于文本框添加到幻灯片的方式,它们可能不会显示在大纲视图中。我必须修复的演示文稿中的几乎所有对象都是这种情况。
莱昂纳多

是的,我想如果人们添加许多独立的文本框,则需要使用诸如原始宏发布之类的方法来选择这些文本框。
AdamV 2011年

对我来说,这仅适用于PowerPoint 2010中的现有文本。对于新添加的文本,在某些情况下该语言仍会更改。
Pieter

到目前为止,这是处理此问题的最干净的方法。它也适用于2013版本。
GoTTimw'2

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
此代码不会影响Shape分组中的。更通用的代码发布在superuser.com/a/1119420/245595
sancho.s恢复莫妮卡(Monica),2016年

3

经过多次演示后,我手工完成或使用了一次性宏,然后我终于破产了,并将其制作为适当的PowerPoint加载项。

我已经将其上传到我的网站:PowerPoint LanguageFixer

它负责:

  • 设置默认语言
  • 所有带有文本框架的形状
  • 分组形状的文本框架(尽可能)
  • 表格中的文字
  • 幻灯片/便笺/讲义母版上的内容

只需将文本框之一设置为所需的语言,然后选择它并单击按钮即可。


1

根据您的情况,有两种选择:


情况1:Office的原始副本是从基于加拿大法语的安装媒体安装的。

您将能够将默认语言设置为英语,但是核心功能将使用安装介质的本地语言。

唯一的解决方法是卸载加拿大法语版本,然后从基于英语的安装媒体进行安装,或者将整个演示文稿复制/粘贴到新文档中并重新设置格式。


情况2:一切似乎都是英语,但在有限的情况下会出现外语。

在这种情况下,以下是Office 2002的修复说明:

  1. 点击开始菜单
  2. 指向程序
  3. 指向Microsoft Office工具
  4. 单击“ Microsoft Office XP语言设置”。
  5. 单击启用的语言选项卡。
  6. 转到默认版本的Microsoft Office框
  7. 选择您想要的语言
  8. 单击确定。将会出现一条消息,告诉您将进行哪些更改。
  9. 点击继续

我希望这有帮助。


感谢您的回答!不过,这些情况都不是。发生的情况是,可以将每个文本框设置为不同的语言以进行拼写检查,并且在这种特定情况下,所有元素的语言都不正确。系统(和Office安装中)的默认语言是英语。
莱昂纳多

0

使用德语PowerPoint进行演示并被手动翻译成英语时,我也遇到了同样的问题。问题在于,语言设置本质上是一种格式,只能单独应用于每个文本框元素

我不知道有任何方便的解决方案-我不得不忍受不匹配或手动更改每张幻灯片上每个单独文本框的语言“格式”。不好玩,所以大部分时间我都忍受了。


0

莱昂纳多(Leonardo发布的代码简单且通常有效,但不会影响Shapes中的分组。更通用的代码也使用递归来处理这种情况(从此处稍作更改,与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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.