我想更改Powerpoint中所有幻灯片的校对语言。我曾尝试通过“语言首选项”菜单设置语言,但这只会为新的PowerPoint更改它。

评论

在PowerPoint演示文稿上更改拼写检查语言的可能重复项

在这方面,PowerPoint的最新版本似乎特别容易出错。我有一个文本框,其中我已将所有文本的语言更改为语言A。(默认语言是B。)因此,当我开始在该文本框中键入内容时,该语言会自动更改为B。我想可能是更改默认语言语言会有所帮助(尝试了其他所有方法)但没有。现在默认语言为A,文本框中所有其他文本的语言为A(并且我已经重新启动PP),但是所有新文本仍显示为B。所以我唯一剩下的问题是:有没有办法切换校对完全关闭?

是的,有一种方法可以进行拼写检查:support.microsoft.com/en-us/help/937422/…-解决了我的问题!

superuser.com/a/1096722/474383的评论实际上更相关。只需更改键盘语言(在Windows中,而不是在PowerPoint中),就会使所有新创建的文本框都遵循该语言。

我更改了设置,但不适用于新幻灯片,始终打样是英文:S

#1 楼

要轻松更改整个PowerPoint的语言,请打开“视图”选项卡,然后选择“大纲”视图。

现在按



Ctrl + A到全选。

工具→语言→选择要设置的语言。

同样,在选择了所有内容后,您可以更改其他内容,例如字体,颜色等。在许多情况下,最好通过更改幻灯片母版来完成,演示文稿中有许多编辑者,可能会有很多“硬”格式设置,这些格式集与基础母版有所不同,需要重置以保持一致。您还可以将单个幻灯片重置为母版样式,但这也可能导致占位符也移动,这在某些情况下可能是不希望的。

PowerPoint 2013



查看→大纲→通过Ctrl + A选择所有幻灯片(在左侧菜单中)。

查看→语言→设置校对语言...→选择要设置的语言。

对我来说-需要重新启动PowerPoint。
可能是因为我也更改了编辑语言:




查看→语言→设置校对语言...→语言首选项→选择编辑语言。 >

评论


感谢您的回答,但是更改语言后,新输入的文本仍使用以前的语言(默认语言)。此外,如果转到主幻灯片,请选择幻灯片,您会注意到,语言栏中的语言仍然是默认语言,并且用于更改它的菜单显示为灰色。我疯了这么多年没有被微软解决。

– Endrju
2014-4-25 14:52



太棒了!虽然不完美,但肯定会有所帮助。我同意@Endrju,为什么还没有解决?

–迈克
2014年12月5日在9:05

作为记录,在Office 2013中,“语言”菜单位于“审阅”窗格(“设置校对语言”)中

–玛丽亚·伊内斯·帕尼萨里(Maria Ines Parnisari)
15年5月18日在4:28



Powerpoint简直令人震惊,不是吗?当遇到此类问题时,我实际上会错过使用开放式办公室的机会。只要他们支持保存到视频,我就会回到办公室。

– mjaggard
2015年10月9日14:06

这样做的主要局限性在于,如果某人以自己的无穷智慧创建了自定义文本框,而不是使用适当的Title + Content布局,那么它将无法正常工作。

– Liilienthal
18-09-18在13:42

#2 楼

使用Powerpoint 2010,我打开了“大纲”菜单-



选择所有文本(Ctrl + A),打开语言菜单并设置我的校对语言



成功了!

语言菜单位于“查看”功能区选项卡上(“幻灯片放映”选项卡之后,在屏幕截图中不可见)。

评论


仅适用于一张幻灯片

– Helge Klein
13-10-16在8:12

这适用于基本幻灯片布局。它不会更改文本框内或嵌套在其他形状内的文本的语言。

–邓肯·琼斯(Duncan Jones)
13年11月25日在9:53

同样适用于Office 2007。

– Alfredo Osorio
2014年11月12日19:03

也可以在Office Mac上工作。

–吉姆·麦基思(Jim McKeeth)
2014年11月13日在18:35

#3 楼

我改进了Inigo的答案,以提供一个递归版本,该版本将所有项目更改为所需的语言。

此版本将递归研究作为组类型的每种形状。一些实验表明,msoGroupmsoSmartArt是组类型-如果您发现可以容纳文本对象的其他类型的形状,请随时添加到该列表中。

 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
 


评论


在OSX上的PowerPoint 16.10中运行此文件时,我得到:编译错误:找不到方法或数据成员

–艾蒂安·洛·黛卡莉(EtienneLow-Décarie)
18-2-17在20:20



非常感谢您提供的出色解决方案。如果我想要美国英语,是否可以将msoLanguageIDEnglishUK更改为msoLanguageIDEnglishUS?

–地板
20 Dec 10'在7:40

我刚刚看到的另一个问题是,它显然并没有改变表中文本的语言。

–地板
20 Dec 10'在7:53

#4 楼

现有答案适用于大纲中显示的文本。不幸的是,在我看来,这并没有覆盖文本的很大一部分,包括图形,表格等。

这个宏为我解决了问题:

  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负责,他在此处发布了原始宏。我添加了对第一级形状分组的支持。为了进一步改进它,可以将宏递归查找包含其他组的组,等等。

评论


+1好开始。请参阅我的答案,以基于此答案的完全递归版本。

–邓肯·琼斯(Duncan Jones)
13年11月25日在9:52



#5 楼

根据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
 


评论


至于其他解决方案,在OSX上的PowerPoint 16.10中运行时,我得到:编译错误:找不到方法或数据成员。有什么建议的解决方案吗?它似乎突出显示了.DefaultLanguageID。

–艾蒂安·洛·黛卡莉(EtienneLow-Décarie)
18-2-17在20:27

@EtienneLow-Décarie:API在PowerPoint 16中可能已更改;我没有它,所以我无法检查,对不起。

– tricasse
18-2-19在10:06



在Windows 7的Powerpoint 2016中为我工作(确切的MS Office版本为16.0.11029.20108)

–克里斯托弗·K。
18/12/19在16:18

完善!我唯一想到的改进就是更改了幻灯片部分的语言:)

–马库斯·曼格斯多夫(Marcus Mangelsdorf)
19年4月17日在9:10

#6 楼

除了Mastergalen提供的答案并解决有关新键入文本的注释:

如果您会发现,只要您开始键入新文本(非常烦人),该语言就会自动变回原来的状态。必须更改PowerPoint的当前默认语言:


确保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中的所有新文本都将使用选定的语言:-)
如果要用原始语言编写,只需将其改回即可。


评论


天哪,他们为什么要那样做?谢谢,做得很好。

– Thibault D.
17年2月24日在13:40

究竟!也应添加到接受的答案中。

– M. A.
18 Mar 4 '18 at 10:53

但这也改变了键盘布局,不是吗?...我想输入英文文本,但我真的想保留我的德语键盘布局...。

–约翰尼斯S.
18年7月16日在12:53

@JohannesS。如果在任务栏中右键单击“ En”并选择“设置”,则将以安装的语言显示德语(DE)和英语(En)。如果展开英语,则会列出“键盘”,展开“键盘”,然后添加您喜欢的德语键盘,也可能删除英文。我没有尝试过,但是应该在理论上起作用;-)

–气体
18年7月16日在21:24

请稍等,如果要使用其他校对语言,是否需要更改键盘语言?太傻了

–MatějRačinský
19年4月4日在21:38

#7 楼

Duncan的版本适用于表格以外的所有内容。
我发现了另一个似乎也适用于表格的代码:https://stackoverflow.com/questions/4735765/powerpoint-2007-set-language-on-tables -charts-etc-that-c​​ontains-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
 



#8 楼

我在2014年为自己创建了一个外接程序,在PowerPoint 2016中仍然可以正常使用。https://github.com/wobba/officeaddin/releases/tag/v1.0.1

它会扫描使用过的语言,并允许您一次更改所有内容,然后进行循环。



评论


真的-这并没有融入Powerpoint本身,仅适用于Windows?

– Wolfgang Fahl
20/12/13在15:45

我知道..和使用javascript的加载项模型不支持遍历对象设置语言:(

– Mikael Svenson
20/12/21在13:43

#9 楼

如果其他方法无济于事,则可能是幻灯片母版中的语言设置引起了语言的意外更改。
要进行更改,请转到“视图”>“幻灯片母版”,选择最父母版幻灯片,选择所有元素,然后按照接受的答案中所述更改语言。尽管占位符文本将保留原始语言,但更改应传播到所有布局。
如果可能,干净的解决方案是使用配置了正确语言的模板。但是,取决于公司要求的模板/ Office安装,或者仅在尝试修复现有文件时,这可能无法实现。