【问题标题】:VSTO Add-In to automatically export custom PowerPoint slide showsVSTO 加载项自动导出自定义 PowerPoint 幻灯片放映
【发布时间】:2011-01-24 14:31:24
【问题描述】:

我公司的一个小组在制作一个非常大的 PowerPoint 幻灯片。并非此套牌中的所有幻灯片都与每个人都相关。该套牌的目的是拥有一个单一的材料来源,人们可以根据所需的演示类型挑选和选择幻灯片。幻灯片有许多预定义的自定义幻灯片,使这个过程更容易。

虽然此解决方案在许多情况下都运行良好,但我们需要一种简单的方法来快速将自定义节目导出到新的演示文稿中。我的目标是开发一个 VSTO 加载项,它允许用户选择一个或多个自定义幻灯片,然后将幻灯片导出到他们的桌面,我正在寻找一些代码来帮助我上路。

有人知道如何将现有的自定义节目导出到新的演示文稿吗?更好的是,有没有一种方法可以让用户选择和导出一个或多个现有节目?

【问题讨论】:

    标签: vsto powerpoint


    【解决方案1】:

    很好的问题,我想自己做这个很久了,所以花时间为你(和我!)想办法。

    基本上,您需要 a) 遍历所有 NamedSlideShows,b) 通过 SlideID 找到他们的幻灯片,c) 添加新的演示文稿,然后 d) 使用原始设计复制 NamedSlideShow 幻灯片.您可以为一个或所有自定义节目执行此操作,具体取决于您发送命令的方式。

    这是一个例子:

    Sub FindShows()
        Dim p As PowerPoint.Presentation
        Set p = PowerPoint.ActivePresenation
        Dim cShow As PowerPoint.NamedSlideShow
        For Each cShow In p.SlideShowSettings.NamedSlideShows
            SaveCustomShow (cShow.Name, p)
            'If using PowerPoint 2010 use the following line instead:
            'SaveCustomShow cShow.Name, p
        Next
    End Sub
    

    FindShows 子程序只是在ActivePresentation 中找到所有自定义节目并将它们发送到一个例程,该例程将根据指定的自定义节目名称创建每个新的演示文稿。您可以根据需要对其进行自定义。

    下面的这个例程是它的核心。有几点需要注意:

    • 寄过来的幻灯片设计 源幻灯片,你必须明确 将复制的幻灯片设置为使用该幻灯片 设计。
    • NamedSlideShow 只会给你 其中幻灯片的SlideID。 您可以使用FindBySlideID 然后 在原件中识别该幻灯片 演示文稿 - 它返回一张幻灯片 目的。然后你只需复制它并 将其粘贴到设计中 原创。
        Sub SaveCustomShow(showName As String, p As Presentation)
            Dim cShows As PowerPoint.NamedSlideShows
            Set cShows = p.SlideShowSettings.NamedSlideShows
            Dim cSlideIDs As Variant
            cSlideIDs = cShows(showName).SlideIDs
            Dim destinationPath As String
            destinationPath = "C:\Temp\"
            Dim newP As PowerPoint.Presentation
            Set newP = PowerPoint.Presentations.Add(WithWindow:=False)
            With newP
                .SaveAs destinationPath & cShows(showName).Name
                Dim s As PowerPoint.Slide
                Dim e As Integer
                For e = 1 To UBound(cSlideIDs)
                    Set s = p.Slides.FindBySlideID(SlideID:=cSlideIDs(e))
                    s.Copy
                    .Slides.Paste.Design = s.Design
                Next
               .Save
               .Close
            End With
            Set newP = Nothing
        End Sub
    

    代码中没有任何错误检查,因此需要解决,但它就像一个魅力!

    【讨论】:

      【解决方案2】:

      这是一种享受! 小心先创建文件的副本!

      http://www.pptfaq.com/FAQ00893.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-30
        相关资源
        最近更新 更多