有没有简单的方法将多个 powerpoint 文件合并为一个文件?
在下面对于二进制文件,您可以使用 /b 复制它们或根据这个问题只需使用复制
copy /b <source1> + <source2> [....] <targetfile>
// or
copy *.csv new.csv
我尝试了后者copy *.pptx new.pptx
,但没有成功——生成的 pptx 是空的。第一种方法copy /b
需要输入每个文件名,这很麻烦,所以我没有尝试。
您知道如何解决这个问题吗?
答案1
是的,你可以,但是你不能使用二进制追加来完成。
为什么...??
因为 CSV 是一个逗号分隔值文件,它允许以表结构格式保存数据。CSV 看起来像普通的电子表格,但扩展名为 .csv。因此,当您附加它们时,您仍然可以在 excel 中使用它们。但 .pptx 有不同的格式,不那么简单。因此二进制附加不起作用。
以下代码将插入所有幻灯片来自所有演讲同一文件夹作为当前活动的演示文稿(但不会尝试将当前演示文稿的幻灯片插入到其自身中)。(亲自测试过)
按照步骤:
- 新建一个文件夹。
要附加多个文件,请将当前文件保存在要插入来自其他文件的幻灯片的新文件夹中。
将所有其他 .pptx 或 .ppt 文件复制到新文件夹打开要添加文件的文档。
现在按 ALT+F11 启动 VBA 编辑器。
或者选择文件 | 选项 | 自定义功能区,然后在自定义功能区下的列表框中勾选开发人员。关闭选项对话框,单击开发人员选项卡,然后单击 Visual Basic 启动编辑器。
在 VBA 编辑器中,确保您的演示文稿在左侧窗格中突出显示。
从菜单栏中选择“插入”、“模块”,将新代码模块插入到您的项目中。粘贴此代码并将“
*.PPT
”更改为“*.PPTX
”或其他任何内容(如有必要)Sub InsertAllSlides() ' Insert all slides from all presentations in the same folder as this one ' INTO this one; do not attempt to insert THIS file into itself, though. Dim vArray() As String Dim x As Long ' Change "*.PPT" to "*.PPTX" or whatever if necessary: EnumerateFiles ActivePresentation.Path & "\", "*.PPT", vArray With ActivePresentation For x = 1 To UBound(vArray) If Len(vArray(x)) > 0 Then .Slides.InsertFromFile vArray(x), .Slides.Count End If Next End With End Sub Sub EnumerateFiles(ByVal sDirectory As String, _ ByVal sFileSpec As String, _ ByRef vArray As Variant) ' collect all files matching the file spec into vArray, an array of strings Dim sTemp As String ReDim vArray(1 To 1) sTemp = Dir$(sDirectory & sFileSpec) Do While Len(sTemp) > 0 ' NOT the "mother ship" ... current presentation If sTemp <> ActivePresentation.Name Then ReDim Preserve vArray(1 To UBound(vArray) + 1) vArray(UBound(vArray)) = sDirectory & sTemp End If sTemp = Dir$ Loop End Sub
- 为了确保代码没有严重的语法问题,请从菜单栏中选择“调试”、“编译”。
- 如果有错误,请再次检查代码,否则单击“运行”按钮。
- 幻灯片将被添加到打开的文档中。
笔记 :从其他文件添加幻灯片时,不会添加背景图片和其他一些元素。
查看并了解更多: