WindowsマシンにOOoがインストールされていることが前提です。
なおマシンに複数バージョンのOOoだったりStarSuiteがインストールされている場合、どの
バージョンが反応するかは、レジストリに登録されている値次第で変わるようです。
サンプルコード:
コード: 全て選択
    Dim objServiceManager, objDesktop, objDocument, objSheets, objSheet1, objCell, objNewDocument
    
    ' OpenOffice.orgに接続し、C:\tmp\test.calcを非表示で開く
    Set objServiceManager = CreateObject("com.sun.star.ServiceManager")
    Set objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
    Dim args(0)
    Set args(0) = objServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
    args(0).Name = "Hidden"
    args(0).Value = True
    Set objDocument = objDesktop.loadComponentFromURL("file:///C:/tmp/test.ods", "_blank", 0, args)
    ' Sheet1を取得
    Set objSheets = objDocument.getSheets()
    Set objSheet1 = objSheets.getByIndex(0)
    
    ' Cell A1を取得
    Set objCell = objSheet1.getCellByPosition(0, 0)
    
    ' Cell A1 に文字列を設定
    Call objCell.setString("テストだよーん。")
    
    ' ドキュメントの保存と終了
    Call objDocument.store
    Call objDocument.dispose
    
    ' ドキュメントを開きなおす
    Dim dummy()
    Set objNewDocument = objDesktop.loadComponentFromURL("file:///C:/tmp/test.ods", "_blank", 0, dummy())
(ドキュメント保存終了して、また開きなおしてたりとか。エラー処理してなかったりとか。)
コード: 全て選択
Set objFrame = objDocument.getCurrentController().getFrame()
Set dispatcher = objServiceManager.createInstance("com.sun.star.frame.DispatchHelper")
ちなみにCOM(ActiveX, OLE)がサポートされている言語ならどれでも似たようなコードでOOoを
操作することができます。PHPとかRubyとか。残念ながらWindows環境限定の方法ですが。
参考: http://www.oooforum.org/forum/viewtopic.phtml?t=9815
またUNIX系環境だと元から用意されているUNOブリッジ(C++, Java, Python)を使ったり、それぞれの
言語環境で開発されているUNOブリッジを利用することになります。例えばPHPだとPUNO, Perlだと
PerlUNOとかが開発されているようです。このあたりもボチボチ調べたりしているので、そのうち投稿
するカモです。
参考:
http://www.wstech2.net/index.php?do=puno
http://search.cpan.org/~mbarbon/OpenOff ... .05/UNO.pm