Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将包含多张幻灯片的PowerPoint文件拆分为多个文件,每个文件包含一张幻灯片?_Vba_Powerpoint - Fatal编程技术网

Vba 如何将包含多张幻灯片的PowerPoint文件拆分为多个文件,每个文件包含一张幻灯片?

Vba 如何将包含多张幻灯片的PowerPoint文件拆分为多个文件,每个文件包含一张幻灯片?,vba,powerpoint,Vba,Powerpoint,我有一个包含50张幻灯片的文件。我需要创建50个不同的文件,每个文件包含一张幻灯片。我想最快的方法包括VBA,但我不知道如何让VBA创建一个新文件,然后返回到主文件。假设您的意思是创建50个演示文稿,这将起作用。在运行代码之前创建目标文件夹: Sub ExportSlides() For X = 1 To ActivePresentation.Slides.Count ActivePresentation.Slides(X).Export "c:\temp\slide" &

我有一个包含50张幻灯片的文件。我需要创建50个不同的文件,每个文件包含一张幻灯片。我想最快的方法包括VBA,但我不知道如何让VBA创建一个新文件,然后返回到主文件。

假设您的意思是创建50个演示文稿,这将起作用。在运行代码之前创建目标文件夹:

Sub ExportSlides()
  For X = 1 To ActivePresentation.Slides.Count
    ActivePresentation.Slides(X).Export "c:\temp\slide" & X & ".pptx", "PPTX"
  Next X
End Sub

我终于发现:

Sub ExportSlides()
    Dim oTempPres As Presentation
    Dim X As Long
    For X = 1 To ActivePresentation.Slides.Count
        sFileName = "C:\Raw\Slide__" & X & ".pptx"
        ActivePresentation.SaveCopyAs sFileName

        Set oTempPres = Presentations.Open(sFileName, , , False)
        
        For Y = (X + 1) To oTempPres.Slides.Count
            oTempPres.Slides(X + 1).Delete
        Next
        
        For Y = 1 To X - 1
            oTempPres.Slides(1).Delete
        Next
        
        oTempPres.Save
        oTempPres.Close
        
    Next X
End Sub

我为一个类似项目编写的代码应该可以将每个PPT文件拆分为它的PPT文件,并将其保存到包含原始PPT文件的文件夹中

一些警告:

它很难处理嵌入的图形,有时还会处理背景。 这将删除指定给幻灯片或模板的所有动画。如果您想保留动画或效果,只需去掉这些代码行 我还没有花时间去平滑自动显示UserForm,但是您可以通过转到Developer选项卡并从宏列表中运行OnPresentationOpen子例程来轻松地运行它。 根据您环境的安全设置,您可能还需要将包含此VBA的.pptm设置为受信任文档,然后它才能工作

选项显式 副代表笔 UserForm1.Show 端接头 公共子进程powerpointpptcalled 作为演示文稿的Dim pptMainPowerPt 暗滑记为长滑记 我想我会坚持多久 将幻灯片视为幻灯片 Dim newSaveName作为字符串 设置pptMainPowerPt=Presentations.OpenpptCalled slideCount=ActivePresentation.Slides.Count '首先从整个文档中删除所有动画 对于ActivePresentation.Slides中的每张幻灯片 对于i=cleansiled.TimeLine.MainSequence.Count到1步骤-1 '删除每个动画 cleansiled.TimeLine.MainSequence.Itemi.Delete 接下来我 下一张幻灯片 调试。打印幻灯片的数量为;幻灯片计数 调试。打印显示的名称为;pptcall Debug.Print ActivePresentation.Name newSaveName=LeftpptCalled,InStrpptCalled,.-1. 调试。打印子字符串名称为;newSaveName 如果i=1,则滑动计数 将新的演示文稿视为演示文稿 将newName设置为字符串 将当前幻灯片设置为幻灯片 newName=newSaveName+\u幻灯片&.pptx 设置currentSlide=pptMainPowerPt.Slides.Itemi 设置newPresentation=Application.Presentations.Add 当前幻灯片。复制 newPresentation.Slides.Paste newPresentation.SaveAs newName 新建演示文稿,结束 下一个 PPTMainPower关闭 端接头
循环播放幻灯片,在每次迭代中添加新演示文稿,将幻灯片复制到新演示文稿,保存并关闭新演示文稿。