ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 307|回复: 3

[求助] VBA将PPT中选中的页单独另存为一个新的PPT文件(类似于2013版的发布功能)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-12-6 14:48 | 显示全部楼层 |阅读模式
2016版的PPT发布功能,多个页面都单独另存为了一个个新的PPT,不能将选中的多页保存在一个新PPT中。求大神写个简单的代码,实现此功能! 感谢!!!

TA的精华主题

TA的得分主题

发表于 2023-12-6 21:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 shenjianrong163 于 2023-12-7 08:53 编辑
  1. Sub SaveSelectionPage2PPT()
  2.     Dim sld As Slide
  3.     Dim i%, p%, d
  4.     Dim pptFile$
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     On Error Resume Next
  7.     pptFile = ActivePresentation.Path & "\导出幻灯片.ppt"
  8.     ActivePresentation.SaveAs pptFile, ppSaveAsOpenXMLPresentation
  9.     For Each sld In ActiveWindow.Selection.SlideRange
  10.         d(sld.SlideIndex) = ""
  11.     Next
  12.     With ActivePresentation
  13.         p = .Slides.Count
  14.         For i = p To 1 Step -1
  15.             If Not d.Exists(i) Then
  16.                 .Slides(i).Delete
  17.             End If
  18.         Next
  19.         .Save
  20.     End With
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-12-7 15:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢老哥!找到了另外一个解决方法:
Sub 导出选中页面()
    Dim prs As Presentation
    Dim prs1 As Presentation
    Dim fso As Object
    Dim 原文件名 As String
    Dim 后缀 As String
   
    Set prs = ActivePresentation
    Set prs1 = Presentations.Add
    Set fso = CreateObject("scripting.filesystemobject")
   
    原文件名 = fso.getbasename(prs.Name)
    后缀 = fso.getextensionname(prs.Name)
   
    Application.ActiveWindow.WindowState = ppWindowMinimized
   
    ActiveWindow.Selection.Copy
   
   
    prs1.Slides.Paste
   
   
   
    prs1.SaveAs prs.Path & "/" & 原文件名 & "-发布." & 后缀
    prs1.Close
   
    Set prs = Nothing
    Set prs1 = Nothing
   
    MsgBox "导出完成!"
End Sub

TA的精华主题

TA的得分主题

发表于 2023-12-7 16:54 | 显示全部楼层
daily444 发表于 2023-12-7 15:57
谢谢老哥!找到了另外一个解决方法:
Sub 导出选中页面()
    Dim prs As Presentation

你这代码能运行吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 15:57 , Processed in 0.039480 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表