タダより高いモノは無い!? 一期4回 OpenOfficeの可能性を探れ!
2012.01.17
技術の小林です。
前回はOpenOffice(LibreOffice)でセルやシートを扱うVBAコードの検証を行った。
今回は予告通り、最終行を求めるコードを検証してみる。
例によって、まずはExcelで元となるブックとマクロを作成する
1つのシートにまばらにデータを配置する。
この時の最終行である20という数値を取得してみる(繰り返し処理のブレイクする値になる訳だ)。
最終行を取得するVBAのソースは以下の通り。
MsgBox "最終行:" & Worksheets("い").UsedRange.Rows.Count
この.UsedRange.Rows.Countプロパティに最終行が入る訳なのだが…まあ実行してみよう。
正しく最終行が出力された。
ところが、セルの属性を変えたりすると空白セルでも数えてしまうという不具合がExcelには存在する。
21行目の空白セルの属性を変えて同じマクロを実行すると…
これはひどい。
なので、これを回避すべく、色々と詰め込んで関数化したものも用意した (FindLastRowTest2) 。
これら2つの最終行を求めるマクロが動くか検証してみる。
例によって、最初の起動にもたつくOpenOffice(LibreOffice)のマクロセレクタから実行
.UsedRange.Rows.Countプロパティは使えるようだ。
関数は動かなかった。
エラー箇所。
Evaluate() が使えないのかな? (借り物のソースだからなあ、これ)
とりあえず、UsedRange.Rows.Countプロパティはそのまま使えたので、気を付ければそのままいけるかも。
関数使うのやめて単純化するという…。
ふと、思いついて、OpenOffice(LibreOffice)では最終行が正しく出るのかやってみた。
セルの属性を変えてマクロ実行。
お!!!
正しく出るじゃないの!!!
関数なんて用意する必要なかったんや!!
かしこい!! かしこいよOpenOffice(LibreOffice)!!
結果として、最終行の求め方は、OpenOffice(LibreOffice)では非常にラクに移行できるというのが分かった。
Excelがダメだという話もあるけれど…。
これだけの検証に随分スペースを使ってしまったので今日はこれまで。
なかなか進まない…^^;