スタッフブログ

タダより高いモノは無い!? 一期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になってる。

 

なので、態々この機能を使えるようにして別シートの選択を記録してみた。

koba2_01.jpg

実験的(不安定)な機能を有効にする(G) にチェックして、
ツール→マクロ→マクロの記録で記録開始。

 

結果。

koba2_02.jpg

で・す・よ・ねーーーー。

 

VBAのコードが書かれてるモジュールに書き出したんだけど、
流石にVBA互換ソースで書いてくれるわけもなく…。

しかもそのままでは動かない。

Option VBASupport 0

の記述がいる。
このモジュールの先頭に、

Option VBASupport 1

これはVBAのソースですよーと書かれている為。

 

楽はできないものだなあ…

 

次から地道な検証が始まる? (続く)

投稿者:技術部