LibreOffice Impress演示模式下宏切换幻灯片功能失效的问题咨询
LibreOffice Impress演示模式下宏切换幻灯片功能失效的问题咨询
我制作了一个包含两张幻灯片的.odp文件,具体设置如下:
- 幻灯片1:有一个圆形,点击它会切换到幻灯片2,仅使用简单交互,没有宏。
- 幻灯片2:有一个正方形,点击它会先隐藏幻灯片1的圆形,再切换回幻灯片1。这里用了交互+鼠标点击触发宏,交互界面显示宏的路径是
vnd.sun.star.script:Standard.Module1.Hide?language=Basic&location=document
对应的宏代码如下:
Sub Hide REM Define objects Dim oDoc As Object Dim oSlideList As Object Dim oSlide As Object Dim oSubject As Object Dim oController As Object REM oDoc refers to this presentation oDoc = ThisComponent REM oSlideList refers to the list of slides oSlideList = oDoc.getDrawPages() REM oSlide refers to the first slide oSlide = oSlideList.getByIndex(0) REM oSubject refers to the first object of the first slide oSubject = oSlide.getByIndex(0) REM Sets oSubject to be invisible oSubject.Visible = False REM Moves back to the first slide oController = oDoc.getCurrentController() oController.setCurrentPage(oSlide) End Sub
测试过程中我遇到了奇怪的问题:
- 启用宏后按F5进入演示模式,点击幻灯片1的圆形可以正常切换到幻灯片2,符合预期。
- 但点击幻灯片2的正方形时,并没有切换回幻灯片1,我按Esc退出演示模式后,却发现幻灯片1的圆形已经被隐藏了——说明宏确实执行了隐藏操作,但切换幻灯片的部分失效了。
- 把圆形恢复可见后,不进入演示模式,在幻灯片2右键点击正方形选择「执行交互」,此时圆形消失,同时成功切换到了幻灯片1,代码完全正常。
- 再次恢复圆形后,通过开发者菜单找到Hide函数并点击运行,代码也能完整执行(隐藏圆形+切换幻灯片)。
现在我怀疑是不是在演示模式下用错了切换幻灯片的API?如果是这样的话,应该怎么修改宏里的oController部分呢?
备注:内容来源于stack exchange,提问作者wc80399




