从VBA EXCEL宏中删除powerpoint演示文稿中的旧图表
我想删除一些PowerPoint演示文稿中的几个不同的旧图表,我想删除的所有项目都称为“对象n” 我已经尝试了一些不同的代码,但没有一个是有效的。问题是我无法获得形状的名称从VBA EXCEL宏中删除powerpoint演示文稿中的旧图表,excel,vba,powerpoint,Excel,Vba,Powerpoint,我想删除一些PowerPoint演示文稿中的几个不同的旧图表,我想删除的所有项目都称为“对象n” 我已经尝试了一些不同的代码,但没有一个是有效的。问题是我无法获得形状的名称 Set ppApp = GetObject(, "Powerpoint.Application") Set ppPres = ppApp.ActivePresentation Set PPSLIDE = ppPres.Slides For Each PPShape In ppApp.ActiveWindow.Selec
Set ppApp = GetObject(, "Powerpoint.Application")
Set ppPres = ppApp.ActivePresentation
Set PPSLIDE = ppPres.Slides
For Each PPShape In ppApp.ActiveWindow.Selection.SlideRange.Shapes
If Left$(PPShape.Name, 6) = "Object" Then
PPShape.Delete
End If
Next PPShape
我想你需要这样的东西:
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
Dim ppShape As PowerPoint.Shape
Set ppApp = GetObject(, "Powerpoint.Application")
Set ppPres = ppApp.ActivePresentation
For Each ppSlide In ppPres.Slides
For Each ppShape In ppSlide.Shapes
If Left$(ppShape.Name, 6) = "Object" Then
ppShape.Delete
End If
Next ppShape
Next ppSlide
编辑
我作了以下介绍:
它包含三张具有以下形状的幻灯片:
- 幻灯片1-3
- 幻灯片1矩形4
- 幻灯片1五点星5
- 幻灯片2对象1
- 幻灯片2对象2
- 幻灯片2表3
- 幻灯片2等腰三角形4
- 幻灯片3对象1
- 幻灯片3对象2
- 幻灯片3对象3
- 幻灯片3右箭头4
PowerPoint.Something
更改为Object
我运行了上面的过程,没有遇到任何错误。部分(并非全部)图表已被删除。我再次运行了代码,其余的代码被删除了。这可能是两个应用程序之间的时间问题。知道这可能是一个问题,我对过程进行了一个小修改,以合并一个循环:
Sub KillPowerPointCharts()
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
Dim ppShape As PowerPoint.Shape
Dim i As Long
Set ppApp = GetObject(, "Powerpoint.Application")
Set ppPres = ppApp.ActivePresentation
For i = 1 To 2
For Each ppSlide In ppPres.Slides
For Each ppShape In ppSlide.Shapes
If Left$(ppShape.Name, 6) = "Object" Then
ppShape.Delete
End If
Next ppShape
Next ppSlide
Next
End Sub
此过程取出了所有图表。您是否假设演示文稿已经打开,并且选择了一些幻灯片?还是需要删除整个演示文稿中的所有此类对象?您的代码预期只能在选定的幻灯片上工作。演示文稿已打开,代码将覆盖而不删除pp上的旧表。在PPSLIDE中每个PPShape的行中。收到的形状编译错误:找不到方法或数据成员,我不知道该做什么。@请添加对PowerPoint的引用library@carlitoes什么改变了在你最后两次评论之间?我在复数方面犯了一些错误,例如形状或幻灯片。谢谢你的支持是的,我一直都这么做。
Sub KillPowerPointCharts()
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
Dim ppShape As PowerPoint.Shape
Dim i As Long
Set ppApp = GetObject(, "Powerpoint.Application")
Set ppPres = ppApp.ActivePresentation
For i = 1 To 2
For Each ppSlide In ppPres.Slides
For Each ppShape In ppSlide.Shapes
If Left$(ppShape.Name, 6) = "Object" Then
ppShape.Delete
End If
Next ppShape
Next ppSlide
Next
End Sub