トップ «前の日記(2007-05-18) 最新 次の日記(2007-05-20)» 編集

十日日記


2007-05-19

Link Excel VBA互換のOpenOffice.org Calc

Microsoft Office System 2007について、新機能の搭載やマルチスレッドの導入など評価できる点もあるものの、UIの大幅な切り替えには賛同できない。操作性を元に戻したバージョンをOffice Classicとでも銘打って発売してほしいくらいだ。これは冗談ではない。実際、「Classic Menu for Office 2007」というアドインが販売されている。もはやOfficeはシステムに近いほど複雑化しているのだから、機能向上と使い勝手の向上とを交互に進めていけばよかったのに、無茶なことをしたものだ。

Novell OO.oところであまり(というか全然)話題を呼んでいないのだが、「OpenOffice.org CalcがExcel VBAをサポート」という記事には驚嘆した。従来、マクロの入ったExcelファイルをCalcで開くと、マクロはすべてコメントアウトされる。またOO.o BASICはVBAとはオブジェクトモデルが異なっているため、そのままのコードではまず動作しなかった。ところが同記事によれば、Novellを中心にExcel VBAへのネイティブ対応が進められているという。そこで、OpenOffice.org Novell Edition 2.0.4(Windows版)を実際に試してみることにした。

ご覧のとおりNovell Editionはアイコンが異なる。落ち着いた配色はGnomeを思わせ、悪くない。試しに、R1C1:R9C9まで九九の表を作る簡単なマクロをExcelで書いてみた。

Sub multiple_table()
    Dim i As Long, j As Long
    Dim m(1 To 9, 1 To 9) As Long

    For i = 1 To 9
        For j = 1 To 9
            m(i, j) = i * j
        Next j
    Next i

    Range("A1:i9").Value = m
End Sub

2次元配列を上のように内側からアクセスするのは、実はVisual Basic 6.0では最善ではないらしい。VB6では多次元配列は最終列しか要素数が変更できないことから想像がつくように、多次元配列のメモリ保管順序は(0,0)→(0,1)→(0,2)ではなく(0,0)→(1,0)→(2,0)のように進むそうだ。しかしここでは考慮せずに先に進む。

マクロの確認上のマクロを標準モジュールに保存してxlsファイルを作り、OO.o Calc(Novell)で読み込んでみる。すると、Excelと同じようにマクロの有効・無効を確認するダイアログが表示される。「Enable」にしてマクロを実行させてみると、たしかにそのまま動く。すばらしい。

いくつか試してみたが、参照設定を必要とするような非標準的なオブジェクトを使うものはダメなようだ。たとえばADODBやMSXMLなどからインスタンス化したものは受け付けてくれない。

Tags: Excel PC
[]


プロフィール

渡辺 慎太郎(na@10days.org)

分野別表示

Admin | Client | Dev | Excel | Linux | PC | PDA | Web | iPad | web | 家電 | 文具 | | 英語 | 言語 | | 音楽

月別表示

1999|07|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|

最近の記事

雨量情報 dictionary.com Yahoo google Yahoo! 路線情報 東京アメッシュ l-mura l-aka l-momo 目次 r-mura r-aka r-daidai r-kiiro asahi.com nogulabo r-sora r-midori r-midori r-momo