python能干的事,麦酱当然也能干,只是可能没人会想到这么玩……
代码如下
Needs["NETLink`"]
PPTMerge[merged_,list_]:=Block[{pptmerged,ppt,client,pages},
CopyFile[First@list,merged];
client=CreateCOMObject["PowerPoint.Application"];
pptmerged=client@Presentations@Open[merged];
PrintTemporary[ProgressIndicator[Dynamic[i],{1,Length@list}]];
Do[
ppt=client@Presentations@Open[list[[i]]];
pages=ppt@Slides@Count;
ppt@Close[];
pptmerged@Slides@InsertFromFile[list[[i]],pptmerged@Slides@Count,1,pages],{i,2,Length@list}];
pptmerged@Save[];
pptmerged@Close[];
client@Quit[];
ReleaseCOMObject[client]]
使用方法
先获取目录下的所有ppt文件,目录请用绝对路径
FileNames["D:\\merge\\*.ppt"]
然后调用函数进行合并,第一个参数是合并后的文件,也要用绝对路径,第二个参数是上一步获取到的文件列表,如果需要改变顺序可以自行sort上一步得到的数组
PPTMerge["D:\\merge\\merged.ppt", %]
合并过程都是程序自动操作,窗口闪来闪去什么的无视就好了,可以先去做自己的事情~