在PowerPoint VBA中创建一个按钮,但它不可单击

时间:2016-05-08 21:46:08

标签: vba powerpoint-vba

我在Excel VBA中工作,创建PowerPoint演示文稿。
我试图在每张幻灯片上放置 Next Previous 按钮。我使用下面的代码:

Dim ppApp As PowerPoint.Application, ppPres As PowerPoint.Presentation, ppSlide As PowerPoint.Slide
Dim shpNextButton As PowerPoint.Shape
Set ppApp = CreateObject("Powerpoint.Application")
Set ppPres = ppApp.Presentations.Open("C:\Users\test1.pptm")
Set ppSlide = ppPres.Slides.Add(ppPres.slides.count + 1, ppLayoutBlank)
Set shpNextButton = ppSlide.Shapes.AddShape(msoShapeActionButtonForwardorNext, 750, 480, 40, 12.5)
With shpNextButton.TextFrame.TextRange
     .Text = "Next"
     With .Font
          .Size = 10
          .name = "Arial"
     End With
End With
shpNextButton.ActionSettings(ppMouseClick).Action = ppActionNextSlide

此代码创建带有正确文本的按钮。但是,在PowerPoint幻灯片中,该按钮是可单击的。当我点击它时,它就像一个普通的形状。

1 个答案:

答案 0 :(得分:0)

当我在PowerPoint VBE中使用其改编版本(删除第1,3,4行并为第5行设置当前幻灯片的引用)时,您的代码适用于我,所以我唯一能想到的是如果尚未将PowerPoint库添加到项目中,则不会设置“pp”常量。如果你输入这个,你会在立即窗口中得到什么?

?ppActionNextSlide

如果一切正常,它应该返回1。如果它返回0,则相当于 ppActionNone ,这将解释正在发生的事情。

顺便说一下,你的代码在我的4:3幻灯片之外添加了按钮,所以我假设你使用的是16:9幻灯片布局。最好引用侧面的右侧少一个偏移来避免这个潜在的问题:

ActivePresentation.PageSetup.SlideWidth