【问题标题】:Export each slide of Powerpoint to a separate pdf file将 Powerpoint 的每张幻灯片导出为单独的 pdf 文件
【发布时间】:2013-07-29 16:21:57
【问题描述】:

我需要为演示文稿的每张幻灯片生成一个 pdf 文件。

我正在使用以下代码:

ActivePresentation.ExportAsFixedFormat ActivePresentation.Path & "\" & ActivePresentation.Name & ".pdf", ppFixedFormatTypePDF, ppFixedFormatIntentPrint

此代码运行良好,但它会将所有幻灯片导出到一个唯一的 pdf 文件中。

【问题讨论】:

  • 查看PrintRangePrintRangeRangeType 参数:它们应该允许您指定要导出的幻灯片。
  • 谢谢蒂姆,没错!打印范围

标签: vba powerpoint


【解决方案1】:

您可以这样做: 下面的代码将创建 pdf,并在当前文件夹的末尾添加幻灯片编号,文件名。

Sub ExportSlidesToIndividualPDF()
Dim oPPT As Presentation, oSlide As Slide
Dim sPath As String, sExt As String

Set oPPT = ActivePresentation
sPath = oPPT.FullName & "_Slide_"
sExt = ".pdf"

For Each oSlide In oPPT.Slides
    i = oSlide.SlideNumber
    oSlide.Select
    oPPT.ExportAsFixedFormat _
        Path:=sPath & i & sExt, _
        FixedFormatType:=ppFixedFormatTypePDF, _
        RangeType:=ppPrintSelection
Next
Set oPPT = Nothing
End Sub

【讨论】:

  • 我收到错误运行时错误 -2147467259 (80004005)':演示文稿(未知成员):您选择打印的幻灯片不再存在。请重新选择。
  • 似乎我找到了一个修复程序在普通视图中,在 oSlide.Select 语句之前,添加行 ActiveWindow.Panes(1).Activate 似乎可以解决问题。
【解决方案2】:
Sub ExportSlidesToIndividualPDF()
Dim oPPT As Presentation, oSlide As Slide
Dim sPath As String, sExt As String
Dim dlgOpen As FileDialog
Set oPPT = ActivePresentation

timestamp = Now()
sExt = ".pdf"

With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then ' if OK is pressed
sPath = .SelectedItems(1)

With dlgOpen

For Each oSlide In oPPT.Slides
    i = oSlide.SlideNumber
    oSlide.Select
    oPPT.ExportAsFixedFormat _
    Path:=sPath & "\" & Format(timestamp, "yyyymmdd") & "_" & "Slide#" & i & sExt, _
    FixedFormatType:=ppFixedFormatTypePDF, _
    RangeType:=ppPrintSelection
Next

End With
End If

End With
Set oPPT = Nothing
End Sub   

我添加了一个OpenFileDialogPicker,所以你可以自己选择希望的位置

【讨论】:

    【解决方案3】:

    对我来说,接受的答案不起作用。还尝试了评论中建议的修复。可能是因为我在 Mac 上。

    我找到了this alternative question/answer,我对其进行了调整以分别保存每张幻灯片:

    Sub each_slide_to_separate_pdf()
    
      'Hide all slides
      For i = 1 To ActivePresentation.Slides.Count
         ActivePresentation.Slides(i).SlideShowTransition.Hidden = msoTrue
      Next i
    
      'display each slide and save
      For i = 1 To ActivePresentation.Slides.Count
        'display current slide
        ActivePresentation.Slides(i).SlideShowTransition.Hidden = msoFalse
    
        'Save location
        Dim filePath As String
        filePath = "/Users/username/Documents/vba_folder" & i & "slide.pdf"
        ActivePresentation.SaveAs filePath, ppSaveAsPDF
        
        'hide the just saved slide
        ActivePresentation.Slides(i).SlideShowTransition.Hidden = msoTrue
      Next i
    
     'Show all slides again
     For i = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(i).SlideShowTransition.Hidden = msoFalse
     Next i
    
    End Sub
    

    【讨论】:

      【解决方案4】:

      我发现了一种快速/简单的方法,可以将 ppt 演示文稿中的单个幻灯片保存为单独的 pdf 文件...没什么特别的...只需几个步骤... (1) 右键单击​​幻灯片(如左栏中所示),选择 COPY (2) 左键单击左下角的开始按钮,重新打开 PowerPoint 程序到一个空白页面 (3) 右键单击​​该空白文档并点击粘贴(您可能在顶部有一个额外的空白页,只需右键单击并剪切它即可摆脱它) (4) 文件/另存为/(选择)PDF 重复每张幻灯片的步骤

      【讨论】:

      • 它真的没有回答这个问题。我假设,@RenanSantos 想要以编程方式而不是手动转换所有幻灯片。
      猜你喜欢
      • 2021-03-26
      • 2016-11-20
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      相关资源
      最近更新 更多