Проблемы работы с COM-объектом в Open Office Basic

Я подумываю перейти с Excel на Open Office (фактически на Lotus Symphony).
У меня есть много файлов Excel с макросами VBA, которые подключаются к CAD, CAM и другим приложениям, а также к моим собственным COM-объектам.
Функция GetObject не существует в Open Office Basic, но я смог сделать функцию, которая использует GetObject функция скриптового объекта.

Проблема в том, что я могу получить доступ к некоторым свойствам / методам этого объекта, но не к другим.

Ниже приведен пример, который подключается к Excel, получает ExcelApp.Workbooks.Count свойство, и падает, когда он пытается получить ExcelApp.Workbooks(I).Name имущество. В этом примере я использую Excel в качестве внешнего приложения только потому, что оно распространено и легко для понимания.

Я заметил, что Open Office VBA IDE хуже, чем Excel VBA IDE: невозможно изменить значение переменной, вычислить выражение, изменить текущий оператор, не использовать intellisense и т. Д.
Это так просто, потому что это 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 ответов

Другие вопросы по тегам