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