Board logo

标题: 用VBS对PPT文档操作,删除PPT页面中,固定尺寸大小的图片集合 [打印本页]

作者: hanlei514    时间: 2021-4-26 19:37     标题: 用VBS对PPT文档操作,删除PPT页面中,固定尺寸大小的图片集合

文本1,内容是尺寸列表,如:
1.39 4.72
2.72 6.52
1.91 5.05
单位:厘米

VBS对某文件夹下所有的PPT和PPTX文件中存在图片的进行比对,只要符合文本1中的尺寸的图片,就删除,然后保存。



能做的回复下吧
作者: went    时间: 2021-4-26 22:14

本帖最后由 went 于 2021-4-26 22:26 编辑

代码保存为test.bat,选择ansi编码
尺寸列表保存为size.txt  单位使用厘米,写两位小数,格式为:宽 高
test.bat和size.txt放到ppt文件夹中双击运行
  1. // & cls & cd /d "%~dp0" & @cscript -E:javascript -Nologo "%~0" &pause&exit
  2. //判断数组包含
  3. function ArrayTest(array,item){
  4. for(var i=0;i<array.length;i++){
  5. if(array[i] == item)
  6. return true;
  7. }
  8. return false;
  9. }
  10. //处理ppt函数
  11. function handlePPT(path){
  12. //打开ppt
  13. ppt.Presentations.Open(path);
  14. //读取ppt
  15. var prst = ppt.ActivePresentation;
  16. for(var i=1;i<=prst.Slides.Count;i++){
  17. //迭代每一页
  18. for(var j=1;j<=prst.Slides.Item(i).Shapes.Count;j++){
  19. //迭代每一张图片
  20. var pic = prst.Slides.Item(i).Shapes.Item(j);
  21. var curWH = '' + (pic.Width/28.35).toFixed(2) + ' ' + (pic.Height/28.35).toFixed(2);
  22. if(ArrayTest(sizeList,curWH)){
  23. WSH.Echo(curWH);
  24. WSH.Echo('第' + i + '页删除第' + j + '张图片:' + pic.Name);
  25. pic.Delete();
  26. --j;
  27. WSH.Echo('-------');
  28. }
  29. }
  30. }
  31. //保存并关闭ppt
  32. prst.Save();
  33. prst.Close();
  34. }
  35. //读取尺寸列表
  36. var fso = new ActiveXObject('Scripting.FileSystemObject');
  37. var ofs = fso.OpenTextFile('size.txt',1,false);
  38. var sizeList = [];
  39. while(!ofs.AtEndOfLine){
  40. sizeList.push(ofs.ReadLine());
  41. }
  42. ofs.Close();
  43. WSH.Echo('删除尺寸列表:' + sizeList);
  44. var ppt = new ActiveXObject('PowerPoint.Application');
  45. ppt.Visible = true;
  46. //读取ppt列表
  47. var fc = new Enumerator(fso.GetFolder('.').files);
  48. WSH.Echo('---------------------------------');
  49. while(!fc.atEnd()){
  50. if(!/\.(pptx|ppt)$/.test(fc.item().name)){
  51. fc.moveNext();
  52. continue;
  53. }
  54. WSH.Echo('处理: ' + fc.item().path);
  55. handlePPT(fc.item());
  56. fc.moveNext();
  57. WSH.Echo('---------------------------------');
  58. }
  59. ppt.Quit();
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2