根据Excel单元格,使用VBA在Powerpoint上删除幻灯片



我在Excel中有一个VBA模块,可以删除Powerpoint幻灯片。代码如下:

Function MyRange(ByVal StartIndex As Long, ByVal StopIndex As Long) As Variant
Dim A() As Long
Dim I As Long
ReDim A(StartIndex To StopIndex)
For I = StartIndex To StopIndex: A(I) = I: Next
MyRange = A End Function
Sub RemoveUnwantedSlides()
ActivePresentation.Slides.Range(MyRange(94, 101)).Delete
ActivePresentation.Slides.Range(MyRange(85, 92)).Delete
ActivePresentation.Slides.Range(MyRange(76, 83)).Delete
End Sub

但是,我想要删除幻灯片编号的代码,具体取决于Excel中特定单元格的当前值。假设"1"在单元格A1中,则只应删除幻灯片94-101。如果"2"在单元格A1中,则只应删除幻灯片85-92。如果单元格A1中有"3",则只应删除幻灯片76-83。

如何在IF语句中插入当前宏?谢谢

我已经适应了以下内容,但它不起作用:

Sub RemoveUnwantedSlides()
Dim A() As Long
Dim I As Long
ReDim A(StartIndex To StopIndex)
For I = StartIndex To StopIndex: A(I) = I: Next
MyRange = A
'The file name and path of the file to update
sourceFileName = "C:UsersChildren.pptm"
Set pptApp = New PowerPoint.Application
Set pptPresentation = pptApp.Presentations.Open(sourceFileName)
pptApp.Activate
Dim ppSlidesArr As Variant
Select Case Range("A1").Value
Case 1
ppSlidesArr = MyRange(64, 65)
Case 2
ppSlidesArr = MyRange(85, 92)
Case 3
ppSlidesArr = MyRange(76, 83)
End Select

ActivePresentation。幻灯片。范围(ppSlidesArr)。删除

结束子

它给了我一个"运行时错误429:ActiveX组件无法创建对象"此外,如果我想删除特定的幻灯片,而不是一个范围,我该怎么办?谢谢

试试下面的代码,你可以使用Select Case使代码更适合未来的场景:

Sub RemoveUnwantedSlides()
Dim ppSlidesArr As Variant
Select Case Range("A1").Value
Case 1
ppSlidesArr = MyRange(94, 101)
Case 2
ppSlidesArr = MyRange(85, 92)
Case 3
ppSlidesArr = MyRange(76, 83)
End Select
ActivePresentation.Slides.Range(ppSlidesArr).Delete
End Sub

最新更新