ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 在EXCEL中用VBA如何打开PPT并增幻灯片

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-6 16:07 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在EXCEL中打开ppt,并新增一个幻灯片
这个增加幻灯片的代码,怎么都不对。用的是office2007 excel ,代码是写在excel里的,哪们大侠解答一下
代码如下
Sub test()
Dim path As String
Dim outputFileName As String
outputFileName = "test1.pptx"
Set pptApp = CreateObject("powerpoint.application")
pptApp.Visible = msoTrue
Set pptOutput = pptApp.Presentations.Open(ThisWorkbook.path & "\" & outputFileName)

Set newSlide = .Presentations.Slides.Addslide(1, ppLayoutBlank)‘这里不知道如何写,一直不对。
End With


end sub



TA的精华主题

TA的得分主题

发表于 2018-4-6 16:13 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-6 16:21 | 显示全部楼层

请指导一下,我那红色的那句一直不知道如何写啊,一直提示不对

TA的精华主题

TA的得分主题

发表于 2018-4-6 17:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 duquancai 于 2018-4-6 18:30 编辑

Sub test()
    Dim pptApp As Object, pptOutput As Object, pptLayout As Object, newSlide As Object
    Dim outputFileName As String, path As String, n&
    outputFileName = "test1.pptx"
    Set pptApp = CreateObject("powerpoint.application")
    pptApp.Visible = -1
    Set pptOutput = pptApp.Presentations.Open(ThisWorkbook.path & "\" & outputFileName, -1, -1, -1)
    If pptOutput.Slides.Count > 0 Then
        n = pptOutput.Slides.Count
        Set pptLayout = pptOutput.Slides(1).CustomLayout
        Set newSlide = pptOutput.Slides.Addslide(n + 1, pptLayout)
    Else
        Set newSlide = pptOutput.Slides.Add(1, 12)
        Set pptLayout = pptOutput.Slides(1).CustomLayout
        Set newSlide = pptOutput.Slides.Addslide(2, pptLayout)
    End If
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-6 20:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-10-20 14:27 | 显示全部楼层
大哥,你好,我最近再学习PPT VSA,实在是没找到学习资料,您有吗?可以给我自学一下吗?万分感谢

TA的精华主题

TA的得分主题

发表于 2022-11-5 22:47 | 显示全部楼层
  1. Sub ll2()
  2.     Dim PptApp As PowerPoint.Application
  3.     Dim PptPresent As PowerPoint.Presentation
  4.     Dim PptSlide As PowerPoint.Slide
  5.     Dim StrTemp As String
  6.         Set PptApp = New PowerPoint.Application
  7.         Set PptPresent = PptApp.Presentations.Add(msoTrue)
  8.         PptApp.Visible = True
  9.         Set PptSlide = PptPresent.Slides.Add(Index:=1, Layout:=ppLayoutTitle)
  10.         Debug.Print PptSlide.Name
  11. 'ActiveWindow.Selection.SlideRange.Shapes.AddPicture(Filename:="D:\日出日落\高德地图\2022年9月26日联安路\IMG_20220926_091814303.jpg", LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=-119, Top:=-369, Width:=960, Height:=1280).Select

  12. Dim Pict 'As Shape
  13.    
  14.         Set PptSlide = PptPresent.Slides.Add(Index:=2, Layout:=ppLayoutTitle)
  15.         Stop
  16.         
  17.         Debug.Print PptSlide.Name
  18.         Set Pict = PptSlide.Shapes.AddPicture(Filename:="D:\日出日落\高德地图\2022年9月26日联安路\IMG_20220926_091814303.jpg", LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=-119, Top:=-369, Width:=960, Height:=1280)
  19.         With Pict
  20.              Debug.Print .Name, .Left, .Top, .Type
  21.         End With
  22.         Stop
  23.         Stop
  24.         Set PptSlide = PptPresent.Slides.Add(Index:=1, Layout:=ppLayoutTitle)
  25.         Debug.Print PptSlide.Name
  26.         Set PptSlide = PptPresent.Slides.Add(Index:=2, Layout:=ppLayoutTitle)
  27.         Debug.Print PptSlide.Name
  28.         
  29.         Stop
  30.         PptPresent.Close
  31.         PptApp.Quit
  32.         Stop
  33. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2023-1-26 10:38 | 显示全部楼层
duquancai 发表于 2018-4-6 17:19
Sub test()
    Dim pptApp As Object, pptOutput As Object, pptLayout As Object, newSlide As Object
...


自学,没有人教授VBA,用Object根本没办法编程序。准确定义dim编程更方便。



  1. Sub ll()
  2.    Dim Ppt As PowerPoint.Application
  3.    Dim Pres As Presentation
  4.    Dim Sld As Slide
  5.    Dim SldRng As SlideRange
  6.    Dim ShpRng As ShapeRange
  7.         Set Pres = Application.ActivePresentation
  8.         Set Ppt = New PowerPoint.Application
  9.         Debug.Print Ppt.Name, Ppt.Path
  10.         Debug.Print Pres.FullName
  11.         Set Sld = Pres.Slides(5)
  12.         
  13.         Sld.Select
  14.         Debug.Print Sld.Name
  15.         'Set SldRng = Ppt.ActiveWindow.Selection.SlideRange
  16.         Set SldRng = Pres.Slides.Range(2)
  17.         With SldRng
  18.             .FollowMasterBackground = msoFalse
  19.             .DisplayMasterShapes = msoTrue
  20.             With .Background
  21.                 .Fill.Visible = msoTrue
  22.                 .Fill.ForeColor.RGB = RGB(200, 200, 100)
  23.                 .Fill.Transparency = 0#
  24.                 .Fill.Solid
  25.             End With
  26.         End With
  27.         
  28.         Debug.Print SldRng.Name
  29.         'SldRng.Background.Fill.ForeColor.RGB = 16777200
  30. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2023-2-5 07:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
添加新的空白Slide关键语句。
.Slides.Add(Pres.Slides.Count + 1, ppLayoutBlank)

  1. Function PptTable(Sld As Slide, Arr, FontSize, Rr, Cc, Left, Top, Width, RowHeight, ColWidth)
  2.      Dim Shp ' As Shape
  3.      Set Shp = Sld.Shapes.AddTable(Rr, Cc, 20, 10, 400)      
  4.       For ii = 1 To Rr           
  5.            For jj = 1 To Cc
  6.                With Shp.Table.Cell(ii, jj).Shape.TextFrame.TextRange
  7.                    .Text = "行" & ii & ",列" & jj
  8.                    .Font.Size = FontSize
  9.                End With
  10.                Shp.Table.Columns.Item(jj).Width = ColWidth
  11.            Next jj
  12.            Shp.Table.Rows.Item(ii).Height = RowHeight
  13.       Next ii
  14.       Set PptTable = Shp.Table
  15. End Function

  16. ''
  17. Private Sub del25()
  18.      Dim Ppt As PowerPoint.Application
  19.      Dim Pres As Presentation
  20.      Dim Sld As Slide
  21.      Dim oTab As Table
  22.      Dim Arr
  23.           Set Ppt = New PowerPoint.Application
  24.           Ppt.Visible = msoCTrue
  25.           Set Pres = Ppt.Presentations.Add
  26.           'Set Sld = Pres.Slides.AddSlide(1, Layout:=ppLayoutTex)
  27.           Set Sld = Pres.Slides.Add(Pres.Slides.Count + 1, ppLayoutBlank)
  28.           Set oTab = PptTable(Sld, Arr, 10, 10, 3, 0, 0, 3, 3, 150)
  29.           Stop
  30.           Ppt.Quit
  31. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 11:26 , Processed in 0.038482 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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