よろずやネット

最近はLibreofficeにハマっています。

オープンオフィスのマクロ、最初の一歩

前回、オープンオフィス(OpenOffice)の操作にトライしてみると書いたが、
実は、私はOpenOfficeのBASICなど触ったことない全くのシロウトである。

Visual Basic .NetとMicrosoft Officeの情報は結構ネット上で見つけることができるので、Visual Basic .NetでOpenOfficeの操作を解説するサイトもそれなりにあるだろうと、考えた。
その類のサイトを見つけて、少しずつ進めば良い。

Visual Basic .Net OpenOffice VB.Net 等々のキーワードを入力して、検索をかけてみた。
ところが、それらしきモノがヒットしない。
見通しが甘かったのだ。

アットマーク・アイティに「OpenOffice(1もしくは2)をVB6もしくはVB.netからエクセルのように使用したい」という2005年のスレッドがあった。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24169&forum=7&7
このスレッドは、前半が注目箇所(後半は感じの悪いやりとり)だが、結局、Visual Basic .NetでOpenOfficeを操作するという事に関しては、初心者に有用な情報は得られなかった。(リンク先の内容が初心者には難しい)

Visual Basic .Net でOpenOfficeの操作を考えるヒトはあまりいないのかな?
ま~、いい。それなら、このブログで私がトライしてみよう。

とにかく、私のやりたいことは、Visual Basic .NetでOpenOfficeの力を借りて印刷をすることだけなのだから、全ての操作を網羅しなくても良いのである。



私がプログラム作成に興味を持ち始めた約10年前と同じ手法で知識を習得して行こう。

マクロの自動記録--->エディタの内容を見る--->不明な単語があったらヘルプを見る--->それにならって自分で書いてみる。

という方法だ。


とりあえず、OpenOfficeのCalc(カルク)の自動マクロ記録機能を使って、一つのセルに文字を書き込む操作をしてみた。
(ちなみに、現在私が使用しているのはOpenOffice 2.3)

BASICのエディタを開いた。
マイクロソフトオフィスのVBAに慣れている私には、直感的に全くわからない言葉が並んでいた。
ここで、一気に疲れるが、我慢して眺めてみる。
以下が私の解釈。

イメージ 1

最後の行のexecuteDispatchコマンド。メソッドと思われるが、5つも値を受け取っている。
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())

最初は、現在のドキュメントを指定していると思われる。
2番目は、「文字入力操作をします」と明示しているのだろう。
3番目は、ゼロ長の文字列、何だろう?
4番目は0、何かの数値
5番目は、2番目のuno:EnterStringが具体的にすることを指定しているのだろう。

ちなみに、付属のヘルプにはexecuteDispatchが載っていない。
Webサイトをこまめに調べていくしか方法がなさそうだ。

上記のようなやり方では、わずかなことをするのに何行もかかなければならない、とシロウトは考えてしまう。
エクセルのVBAは、CellとかRangeで場所を指定して、値を代入する、というようにわかりやすかったが、OpenOfficeにはそのような方法はないのだろうか?