タダより高いモノは無い!? 一期2回 OpenOfficeの可能性を探れ!
2011.11.30
技術の小林です。
前回はとりあえずOpenOffice(LibreOffice)の設定をして、VBAのソースコードが動く環境は整えた。
今回から具体的な移行作業となる訳だけど、
4k行もある自分にも他人にも優しくないソースコードをいきなり変換するのはきっとダメだ。
――うん、色々とダメだ。
なので移行したい機能―つまり、検証すべき機能―を絞って、
OOoBasicに置き換えていかなければならない。
1.データの比較
一番多いのがデータの比較。
場合によっては変換や補正もかける。
勿論、比較対象は別ファイル別シートであったりするので…
・ファイルのオープン/クローズ
Workbooks.Open Filename:=***
ActiveWindow.Close
・セル、シート、ブックの選択と値の取得
Cells.Select
Columns("**:**").Select
Rows("**:**").Select
Worksheets(***).Cells(**, **).Value
・コピー&ペースト
Selection.Copy
ActiveSheet.Paste
…と言ったあたりの動きを重点的に見る必要がある。
2.DB接続
一部のソースコードはODBCによる外部データベースファイルを参照し、データを比較している。
ADOを使用しているのでそのまま使用できるとも思えないので、
これも代替方法を考える必要があるだろう。
そのままであれば途方に暮れそうだったけれど、先人達は偉大だ。
OpenOfficeへの道
VBAユーザーの為のOpenOffice.org 備忘録
非常にありがたいw
この辺りの対比表もチェックしつつ、進めていこう。
今日の失敗。
マクロの記録機能を使えば、もっと効率よくコードの比較ができるんじゃない?
…と、思い立った。
我ながら名案だと。
で、LibreOfficeでマクロの記録をしようとしたら、メニューに無い。
OpenOfficeにはあるのに!
調べてみたら、LibreOfficeではデフォルトではこの機能がOffになってる。
なので、態々この機能を使えるようにして別シートの選択を記録してみた。
実験的(不安定)な機能を有効にする(G) にチェックして、
ツール→マクロ→マクロの記録で記録開始。
結果。
で・す・よ・ねーーーー。
VBAのコードが書かれてるモジュールに書き出したんだけど、
流石にVBA互換ソースで書いてくれるわけもなく…。
しかもそのままでは動かない。
Option VBASupport 0
の記述がいる。
このモジュールの先頭に、
Option VBASupport 1
これはVBAのソースですよーと書かれている為。
楽はできないものだなあ…
次から地道な検証が始まる? (続く)