在Open Office Basic中使用COM对象时出现问题

时间:2013-02-14 16:21:33

标签: com openoffice.org openoffice-calc openoffice-basic

我正在考虑从Excel切换到Open Office(实际上是Lotus Symphony) 我有许多带有VBA宏的Excel文件,它们连接到CAD,CAM和其他应用程序,以及我自己的COM对象 Open Office Basic中不存在函数GetObject,但我能够创建一个使用脚本对象的GetObject函数的函数。

问题是我可以访问该对象的某些属性/方法,但不能访问其他属性/方法。

下面是一个连接到Excel的示例,获取ExcelApp.Workbooks.Count属性,并在尝试获取ExcelApp.Workbooks(I).Name属性时崩溃。 在这个例子中,我使用Excel作为外部应用程序,因为它很常见且易于理解。

我注意到Open Office VBA IDE比Excel VBA IDE更差:无法更改变量的值,评估表达式,更改当前语句,无智能感知等。
它是如此简单,因为它是Lotus Symphony,安装另一个版本的Open Office会变得更好吗? 它是如此简单,因为它是VBA,使用像Python这样的其他语言会变得更好吗?

以下是代码:

代码:

Public ExcelApp As Object 

Sub Test 
  GetRunningExcel 
  If ExcelApp Is Nothing Then 
    MsgBox "Excel is not running" 
  Else 
    Dim S As String, I As Integer, N As Integer 
    N = ExcelApp.Workbooks.Count 
    For I = 1 To N 
      S = S & Chr(10) & ExcelApp.Workbooks(I).Name 
    Next I 
    S = "Excel has " & N & " open documents" & S 
    MsgBox S 
  End If 
End Sub 

Function GetRunningExcel() 
  Dim oleService 
  Dim VBScript 
  Dim S as string 
  oleService = createUnoService("com.sun.star.bridge.OleObjectFactory") 
  VBScript= oleService.createInstance("MSScriptControl.ScriptControl") 
  VBScript.Language = "VBScript" 
  S = S + "Public O" + Chr(10) 
  S = S + "Set O = GetObject(, ""Excel.Application"")" + Chr(10) 
  On Error Resume Next 
  VBScript.ExecuteStatement(S) 
  Set ExcelApp = VBScript.CodeObject.O 
  On Error Goto 0 
End Function

0 个答案:

没有答案
相关问题