我已经有了将 PowerPoint 幻灯片添加到演示文稿时运行的代码,但我找不到在删除幻灯片时捕获的方法。我想知道是否有人有什么想法?
我查看了 WithEvents 列表,但找不到显示正确的列表。
PowerPoint中没有这样的事件:-(
代码如何工作
SlideSelectionChanged
触发时,会将当前幻灯片计数与计数器进行比较 - 如果少于,则必须删除至少一张幻灯片。 SlideSelectionChanged
删除幻灯片时会触发,因为删除后会选择另一张幻灯片。将此代码放入您的应用程序类中。
Private WithEvents objApp As Application
Private Sub Class_Initialize()
Set objApp = Application
On Error Resume Next
'When addin starts there is no activepresentation
If Application.Presentations.Count > 0 Then
If Not ActivePresentation Is Nothing Then
initSlideCounter ActivePresentation
End If
End If
On Error GoTo 0
End Sub
Private Sub initSlideCounter(p As Presentation)
p.Tags.Add "CNTSLIDES", p.Slides.Count
End Sub
Private Property Get SlideCounter(p As Presentation) As Long
On Error Resume Next
SlideCounter = p.Tags("CNTSLIDES")
If Err <> 0 Then
initSlideCounter p
SlideCounter = p.Tags("CNTSLIDES")
End If
On Error GoTo 0
End Property
Private Sub objApp_SlideSelectionChanged(ByVal SldRange As SlideRange)
Dim p As Presentation: Set p = SldRange.Parent
If p.Slides.Count < SlideCounter(p) Then
MsgBox "at least one slide has been deleted"
initSlideCounter p 'slide deleted
End If
End Sub
Private Sub objApp_NewPresentation(ByVal Pres As Presentation)
initSlideCounter Pres
End Sub
Private Sub objApp_PresentationOpen(ByVal Pres As Presentation)
initSlideCounter Pres
End Sub
Private Sub objApp_PresentationNewSlide(ByVal sld As Slide)
initSlideCounter sld.Parent
End Sub