0

ExcelからOpenOffice(実際にはLotus Symphony)に切り替えることを検討しています。
CAD、CAM、その他のアプリケーション、および自分のCOMオブジェクトに接続するVBAマクロを含むExcelファイルがたくさんあります。
Open Office Basicにはこの機能GetObjectはありませんがGetObject、スクリプトオブジェクトの機能を利用した機能を作ることができました。

問題は、そのオブジェクトの一部のプロパティ/メソッドにはアクセスできますが、他のプロパティにはアクセスできないことです。

以下に、Excelに接続してExcelApp.Workbooks.Countプロパティを取得し、プロパティを取得しようとするとクラッシュする例を示しExcelApp.Workbooks(I).Nameます。この例では、Excelが一般的で理解しやすいという理由だけで、外部アプリケーションとして使用しています。

Open OfficeVBAIDEはExcelVBAIDEよりも劣っていることに気づきました。変数の値を変更したり、式を評価したり、現在のステートメントを変更したり、インテリセンスを使用したりすることはできません。LotusSymphonyで
あるため、非常に単純ですか。別のバージョンのOpenOfficeをインストールすると、状況は改善されますか?
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
4

0 に答える 0