ExcelVBAをOOoマクロに変換

営業さん用に、建築のフローを説明するための簡単なツールで、起点日から所定の日数を足したり引いたりするだけのワークブックを作った。2か月前のこと。
当初はブラウザだけで使えるようにいくつかのツールを作っていた。現場に設置するパソコンはアプリなしでよかったのだが、この日付計算のためにEXCELが必要にってしまった。
簡単なコードなので、OpenOffice.orgにチャレンジしてみるのにちょうどよいかもしれない。
ということでOOo Basicで書くか・・、と思っていろいろ調べていたら、Excel VBAをサポートしたOOoもあるらしい。(参照
NovellブランドのOpenOffice.org 2.1をダウンロードする。ダウンロードにはユーザー登録が必要。

標準のOpenOffice.orgでは、VBAコードはモジュールで処理される。VBAコードはすべてコメントに変えられ、新しいサブルーチンにカプセル化される。サブルーチンに付けられる名前はモジュール名と同じだ。
 
このバージョンのOpenOffice.org Calcでは、VBAコードを含むモジュールを読み込んだときに、次のようなコードが追加される。
Option VBASupport 1
この行は、標準のOOo Basicのコードには影響しない。VBAの互換機能を正しく認識するためのものだ。VBAステートメントを使用したい場合や、VBAの方が使い慣れている場合に、Calc用に独自のVBAモジュールを作成するときには、この行を自分で記述する必要がある。

実際にファイルを開くとコメントアウトもされてなく、ほぼ動いた。
修正点はいくつか。
myDate = Format(Now, "yyyy/mm/dd")
は秒まで含む書式のままだったので、
myDate = DateValue(Now)
に修正。
困ったのがこれ。
Range("k8").FormulaR1C1 = "=R[-6]C[-9]+" & date_a
セルK8には

=B2+45

となる。足すのはできるのだが、マイナス記号の場合、マイナス記号の後ろが入ってこない。
Range("b2").FormulaR1C1 = "=R[6]C[9]-" & date_a

=K8

四苦八苦しながらも
Range("b2").FormulaR1C1 = "=R[6]C[9]+-" & date_a
にすることで解決。
自動実行マクロも動かなかったので、こちら(参照)を参考に「ドキュメントを開くとき」イベントに、このマクロを割り当てる。

このように、VBA互換機能はたいへん結構なものだが、まだOOoソリューションの主流にはなっていない。

まぁそうなんだろうね。