使用脚本处理PPTX

将一个PPT文档按页分割成多个PPT文档的代码

由于需要批量编辑PPTX,想采用脚本方式处理,比起手工处理更快捷。思路如下:

 

1. 先将一个pptx拆分成单页,并保存。

2. 根据需要,将多页进行提取,组合,生成一个新的pptx。

第一步需要用到pptx的宏定义,第二步使用到python处理。

 

下面是第一步,将一个pptx拆分成多个pptx,通过宏定义处理pptx,具体步骤如下:

1、打开需要分割的PPT文档(假设文件名为“原始文档.ppt”);

2、键入Alt+F11切换到VBA编辑环境,然后选择菜单“插入-模块”;
3、在代码编辑区粘贴如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Option Explicit
Sub SplitSlides()
Dim oSrcPresentation As Presentation, oNewPresentation As Presentation
Dim strSrcFileName As String, strNewFileName As String
Dim nIndex As Integer, nSubIndex As Integer, nTotalSlides As Integer, nBound As Integer, nCounter As Integer
Dim fso As Object
Const nSteps = 5 ' 修改这里控制每隔几页分割一次
If nSteps <= 0 Then Exit Sub
Set fso = CreateObject("Scripting.FileSystemObject")
Set oSrcPresentation = ActivePresentation
strSrcFileName = oSrcPresentation.FullName
nTotalSlides = oSrcPresentation.Slides.Count
nCounter = 1
For nIndex = 1 To nTotalSlides Step nSteps
If nIndex + nSteps > nTotalSlides Then
nBound = nTotalSlides
Else
nBound = nIndex + nSteps - 1
End If
strNewFileName = fso.BuildPath(fso.GetParentFolderName(strSrcFileName), _
fso.GetBaseName(strSrcFileName) & "_" & nCounter & "." & fso.GetExtensionName(strSrcFileName))
oSrcPresentation.SaveCopyAs strNewFileName
Set oNewPresentation = Presentations.Open(strNewFileName)
If nBound < nTotalSlides Then
For nSubIndex = nBound + 1 To nTotalSlides
oNewPresentation.Slides(nBound + 1).Delete
Next
End If
If nIndex > 1 Then
For nSubIndex = 1 To nIndex - 1
oNewPresentation.Slides(1).Delete
Next
End If
oNewPresentation.Save
oNewPresentation.Close
nCounter = nCounter + 1
Next nIndex
MsgBox "结束!", vbInformation
End Sub

 

4、修改代码中指定的分割页数;
5、键入F5运行,直到提示“完成!”
6、在源PPT所在目录下生成一系列命名为“原始文档_1.ppt”、“原始文档_2.ppt”……的新文档,即为分割之后的结果。
附注:原来想用更简单的一个API函数Slides.InsertFromFile,但是发现通过这个函数插入的PPT无法保留原始文档中的背景等信息。所以只好采用现在这样的另存为并删除多余幻灯片的“笨”办法了。

使用python处理部分,接下来补充脚本。

 

posted @   念槐聚  阅读(211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示