在PowerPoint 2007中插入幻灯片总数


25

是否可以将PowerPoint演示文稿中的幻灯片总数插入脚注中?我正在寻找一种自动化的方法。

当然,我可以编辑页脚并将其手动放置,但是如果我增加/减少幻灯片,则有必要进行调整。这是我们永远忘记的事情。

Microsoft帮助说明了如何手动进行。我简直不敢相信PowerPoint没有它...


1
Powerpoint中是否没有“插入>字段”选项?那就是我过去用文字做的方式……
Seamus 2010年

是的,那就是我想要的。我是2007年的新手,找不到。
鲍勃·里弗斯

是的,在Powerpoint中不存在字段,因此该行不起作用。
BBlake

4
我们仍然需要这个非常基本的功能的插件有多烦人?我遇到这个问题已有多年了……

Answers:


2

如果您正在寻找一个选项或配置设置,它将自动将其添加到您创建的每个演示文稿中,那么没有一个。但是,如果您编辑页眉或页脚,则可以在其中自动添加幻灯片编号,并使它们出现在所有幻灯片上。

http://office.microsoft.com/en-us/powerpoint/HA101181931033.aspx


2
是的,这是我阅读的文章。我不想手动输入“ 10”。我正在寻找类似<#>的<#> ...
Bob Rivers

1
啊,好的,是的,仅当您只需要页码时,此方法才有效。如果要“总幻灯片数”,则没有快速解决方案。我能想到的唯一其他解决方案是使用VBA(应用程序的Visual Basic)来完成此任务。我知道这行得通,但可能会有些复杂。
BBlake

@BBlake你是对的。需要VBA才能实现此目的。有关如何执行此操作的详细信息,请参见我的答案
trejder

7

这基本上是pwrpntuser的代码,扩展为完整的可执行指南。

创建宏

  1. 在PowerPoint 2007和更高版本中,请确保您将演示文稿保存为.pptm扩展名(允许宏的标准演示文稿)。

  2. 确保已使用本文1中介绍的方法添加了幻灯片编号。

  3. 打开“ ”窗口2。在PowerPoint 2007及更高版本中,单击View选项卡(最后一个),然后Macro单击最后一个工具栏组中的按钮。在早期版本中,Tools > Macro从菜单中选择。

  4. 输入宏的名称(例如PageCountUpdater),然后单击Create

  5. 在和之间粘贴宏代码(来自pwrpntuser的答案或以下)。将最缩进的行更改为lang或类似的内容。Sub PageCountUpdater()End Subvanof

  6. 保存宏并关闭Microsoft Visual Basic for Applications。返回PowerPoint。

你完成了。要插入的代码(完整且带有正确的“胶水字”):

Sub PageCountUpdater()
    Dim s As Slide
    Dim shp As Shape

    For Each s In ActivePresentation.Slides
        s.DisplayMasterShapes = True
        s.HeadersFooters.SlideNumber.Visible = msoTrue

        For Each shp In s.Shapes
            If Left(shp.Name, 12) = "Slide Number" Then
                shp.TextFrame.TextRange.Text = s.SlideNumber & " of " & ActivePresentation.Slides.Count
            End If

        Next
    Next
End Sub

执行宏

  1. 再次打开“ ”窗口。

  2. 选择已保存的PageCountUpdater宏,然后点击Run

您每次必须手动执行此操作。键盘快捷键是最受欢迎的。但是...除了购买商业插件外,没有其他方法可以更改PowerPoint的快捷方式,为此您必须为每台计算机支付20美元起的价格。见结束文章的详细信息。

删除宏

仅在需要时运行此宏。它不是一个宏指令。它使用实际的幻灯片计数更新字段,仅此而已。字段本身是一个标准的文本字段。没魔术 这意味着您可以轻松地将文件转换回.pptx该宏并将其丢弃,一旦确定演示文稿已完成,就不会再向其中添加幻灯片了。删除宏后,字段将保留其位置,其值保持不变。

这很舒适,因为许多用户不喜欢带有宏的文档以及许多演示场所,展览会,会议等。根本不允许您运行.pptm文件。

这也很好,因为即使您手动删除它们,该宏也会在所有幻灯片上重新创建编号字段(标题的幻灯片除外,请参阅脚注1)。因此,在确定幻灯片的最终数量和顺序之后,您应该最后一次运行它,然后将其删除。

打开启用宏的文件

如果您决定将.pptm扩展名和宏保留在其中,则将始终在禁用宏的情况下打开此文档,并且Enable macros每次(如果使用默认设置运行)都必须单击以启用它们。

如果您相信文档是您自己的,则它们不包含恶意代码,并且都存储在安全的位置(即不在某个临时或共享文件夹中),则可以更改每个Office程序设置,以始终打开这些文件。启用宏。

最简单的方法是添加具有启用了宏的演示文稿的文件夹,以保护PowerPoint中的位置。

去做这个:

  1. 单击File选项卡,Options按钮,Trust Center部分和Trust Center Settings按钮。

  2. 转到Trusted locations第二部分,然后单击Add new location...按钮。

  3. 将文件夹路径粘贴或选择到Path字段中,然后选择检查添加位置中的所有子文件夹是否也应视为受信任。

  4. 单击OK三次以确认并关闭所有打开的窗口。重新打开启用宏的文档。

从现在开始,从刚刚添加的位置打开的所有文档都不应显示任何警告,并且应始终在启用宏的情况下打开。您可以在此Office.com支持文档中找到有关此问题的更多详细信息。

脚注

1 在大多数版本的PowerPoint中,标题幻灯片的含义不是确定为演示文稿中的第一张幻灯片,而是样式为标题幻灯片的任何幻灯片。插入新幻灯片时,您会看到不同的幻灯片类型。这意味着,如果没有标题样式的幻灯片,则将页码添加到所有幻灯片中。相反,如果您在演示文稿中使用了许多标题幻灯片,例如标记不同的部分或块,则所有这些幻灯片上都会缺少编号。

2 所有GUI元素的名称都是从我的波兰语版PowerPoint 2010即时翻译而来的。在PowerPoint的其他发行版或语言版本中,它们可能略有不同。相应地调整。


5

首先,确保每张幻灯片都有正常的幻灯片编号。然后添加一个模块,插入以下代码,然后按F5(开始)。

Dim s As Slide
Dim shp As Shape

For Each s In ActivePresentation.Slides
    s.DisplayMasterShapes = True
    s.HeadersFooters.SlideNumber.Visible = msoTrue

    For Each shp In s.Shapes
        If Left(shp.Name, 12) = "Slide Number" Then
            shp.TextFrame.TextRange.Text = s.SlideNumber & " van " & ActivePresentation.Slides.Count
        End If

    Next
Next

3
什么是模块?
Pez Cuckow,2012年

当您以此方式通过编程方式更改幻灯片编号占位符的内容时,删除/添加/移动幻灯片时,幻灯片编号将不再自动更新。我认为这会带来更多无法解决的问题。
OfficeAddinDev


0

我找到一个网页,上面说您将x的<#>放入主幻灯片中的文本框中,然后在幻灯片中添加“幻灯片编号”。我让它简短地工作了,但是当我移动它并再次尝试时,它不再将完整的幻灯片编号填充到x中。但是此解决方案对于大多数用户而言可能是可行的。


是的...并且此网页已经在此处提及,答案比您的答案早1 .5年。
trejder 2015年

0

这是一些稍有不同的代码,它们用“ ##的幻灯片#”更新了页脚。我选择不将隐藏的幻灯片计入总数。我将这段代码从鼠标悬停在幻灯片1上的隐藏操作按钮上执行。

Dim SlideTotal As Integer
Dim VisibleSlides As Integer
Dim SlideNum As Integer
Dim i As Integer

With ActivePresentation

    SlideTotal = .Slides.Count

    For i = 1 To SlideTotal
        If .Slides(i).SlideShowTransition.Hidden = msoFalse Then
            VisibleSlides = 1 + VisibleSlides
        End If
    Next

    For i = 1 To SlideTotal
        If .Slides(i).SlideShowTransition.Hidden = msoFalse Then
            SlideNum = 1 + SlideNum
            .Slides(i).HeadersFooters.Footer.Visible = msoCTrue
            .Slides(i).HeadersFooters.Footer.Text = "Slide " & SlideNum & " of " & VisibleSlides
        Else
            .Slides(i).HeadersFooters.Footer.Visible = -msoFalse
        End If
    Next

End With

欢迎来到超级用户。请注意,您回答的问题已有多年历史并且已经被接受。尽管这样做没有错,但您不太可能得到回应。
CharlieRB
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.