以编程方式在PowerPoint VBA中获取上一个/下一个动画

以编程方式在PowerPoint VBA中获取上一个/下一个动画,vba,powerpoint,sendkeys,Vba,Powerpoint,Sendkeys,我正在尝试从PowerPoint VBA中的动作按钮控制幻灯片动画。我使用sendKeys在当前幻灯片中导航到下一个和上一个动画 操作按钮基本上运行displayPrevious和displayNext宏,如下所示: Sub displayPrevious() SendKeys ("{LEFT}") End Sub Sub displayNext(ByRef oShp As Shape) SendKeys ("{RIGHT}") End Sub 但是,这会导致不需要的功能。在

我正在尝试从PowerPoint VBA中的动作按钮控制幻灯片动画。我使用
sendKeys
在当前幻灯片中导航到下一个和上一个动画

操作按钮基本上运行
displayPrevious
displayNext
宏,如下所示:

Sub displayPrevious()
    SendKeys ("{LEFT}")
End Sub

Sub displayNext(ByRef oShp As Shape)
    SendKeys ("{RIGHT}")
End Sub
但是,这会导致不需要的功能。在上一个动画之后,“下一步”按钮切换下一张幻灯片或上一张幻灯片

我想这样做的一种方法是,执行下一个或上一个,如果是更改幻灯片,就不要运行
sendkeys

或者也许我认为这是错误的方式,可以有一个更简单的解决办法

终于找到了一个(有效但不完美的)解决方案

基本上,只需检查从
getClickIndex
播放的当前动画,并与上一个的
0
和下一个的
getClickCount
进行比较

Sub displayPrevious()
   If ActivePresentation.SlideShowWindow.View.GetClickIndex <> 0 Then
        SendKeys ("{LEFT}")
    End If
End Sub

Sub displayNext()
    If ActivePresentation.SlideShowWindow.View.GetClickIndex <> ActivePresentation.SlideShowWindow.View.GetClickCount Then
        SendKeys ("{RIGHT}")
    End If
End Sub
Sub displayPrevious()
如果ActivePresentation.SlideShowWindow.View.GetClickIndex为0,则
SendKeys(“{LEFT}”)
如果结束
端接头
子显示下一步()
如果是ActivePresentation.SlideShowWindow.View.GetClickIndex ActivePresentation.SlideShowWindow.View.GetClickCount,则
SendKeys(“{RIGHT}”)
如果结束
端接头

PowerPoint VBA对象模型包含许多动画对象(例如。如果你真的需要使用sendkeys来控制它们,我会感到惊讶。好的,但是有很多形状合并成动画。例如,我在幻灯片中总共有大约60个形状,但只有大约12次单击才能显示它们。起初我想获得单击次数,然后与形状次数匹配,但这不起作用k、 我对PowerPoint VBA几乎什么都没做过,但我已经做了足够多的Excel VBA,我知道几乎不需要
SendKeys
。它是一个不可靠的工具,在运行中有一些实用程序(来自VBA)缺少API的GUI应用程序,但Office VBA通过一个相当复杂的API来控制Office。关于什么形状和点击的信息很可能在某个地方出现,尽管可能不是以一种方便的形式出现。但实际上,我只是在猜测。我对PowerPoint VBA所做的一点工作给我的印象是,它是e被忽视的VBA办公室继子。