Ubuntu 20.04下LibreOffice Impress BASIC报错:未找到createInstance方法
LibreOffice Impress BASIC代码报错:property or method not found: createInstance 解决建议
问题场景
在Ubuntu 20.04 LTS系统上运行LibreOffice 7.4.5.2 Impress的BASIC代码时,执行以下代码出现BASIC runtime error: property or method not found: createInstance错误,调试显示createInstance方法已加载但仍报错:
REM ***** BASIC ***** Option Explicit Sub CreateAIHistoryPresentation1() Dim oDoc As Object Dim oPresentation As Object Dim oSlide As Object Dim oShape As Object Dim oText As Object Dim oTitle As Object Dim oImage As Object Dim i As Integer Dim service01Name As String Dim objDoc As Object 'objDoc.BasicLibraries.LoadLibrary("Tools") if Not BasicLibraries.isLibraryLoaded("Tools") Then BasicLibraries.loadLibrary("Tools") End if GlobalScope.BasicLibraries.LoadLibrary("Tools") ' Create a new presentation document oDoc = StarDesktop.LoadComponentFromURL("private:factory/simpress", "_blank", 0, Array()) oPresentation = oDoc.getPresentation oPresentation.dbg_properties oPresentation.dbg_methods ' Page 1: Title Slide oSlide = oPresentation.createInstance("com.sun.star.presentation.Slide") End Sub
错误原因
oPresentation是com.sun.star.presentation.Presentation服务实例,该对象并不提供createInstance方法,代码混淆了LibreOffice UNO对象模型的层级——创建幻灯片需要操作文档的DrawPages集合,而非Presentation对象。
修正方案
替换创建幻灯片的代码段,改为通过文档的DrawPages集合插入新幻灯片:
' Page 1: Title Slide Dim oDrawPages As Object oDrawPages = oDoc.getDrawPages() oSlide = oDrawPages.insertNewByIndex(0) ' 在索引0位置插入新幻灯片
如果需要创建带预设版式的幻灯片,可在插入后设置版式:
' 设置为标题幻灯片版式 oSlide.Layout = com.sun.star.presentation.FadeEffect.TITLE
内容的提问来源于stack exchange,提问作者tony gil
相关产品推荐
相关产品推荐

