t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

LibreOffice/OpenOffice.org Basicハンドブックを購入

私のサイトwww.thom.jpではVBAの入門者が無料で手軽にVBAを学べるように教材をPDFで配布している。

また、学習したくてもそもそも自宅にExcel環境が無い方もいるので、そういう方のためにVBScriptで代替する方法も掲載している。
http://www.thom.jp/beginner/vbawithvbs.html

しかし、そもそも自宅PCがWindowsじゃない方も居るので、その場合にVBAを学ぶにはどうしたら良いか考えてみた。

Office for Macという手はあるけれど、結構値段がするのでわざわざ買うのも嫌だという場合や、Linuxを使っているのでそもそもMS-Officeという選択肢が無い場合である。

そこで活用するのが無償のオフィススイートであるOpenOffice.orgだ。

OpenOfficeにはBASIC言語でマクロを作成できる機能があり、基本的な文法はVBAと同じである。
ただExcelオブジェクトがそのままでは扱えないため、セルやシートの操作が独自の表記になってしまう。

たとえばこんな感じ。

'Excel VBAの場合
    ThisWorkbook.Sheets(1).Cells(1,1).Value = "Hello, Excel!"

'OpenOffice.org Basicの場合
    ThisComponent.Sheets(0).getCellByPosition(0, 0).String = "Hello, OOo Basic!!"

オブジェクト名やプロパティが異なるほか、1番目のシートがSheets(1)かSheets(0)か、A1セルが(1, 1)か(0, 0)かという違いがある。

その独自部分をきちんと把握するため、以下の書籍を丸善ジュンク堂にて購入してきた。

LibreOffice/OpenOffice.org Basicハンドブック

LibreOffice/OpenOffice.org Basicハンドブック

内容は表紙に記載のとおり、Basicの基本構文から、API・ライブラリの利用、Writer/Calc/Draw/Impress/Baseごとのサンプル等、まんべんなく紹介されていて割と良い本だと思う。

ただ、まんべんなさすぎて、肝心のCalc独自オブジェクトの操作に割かれているのはわずか10ページ。OpenOffice.org Basicの情報がそもそも少ないので手元において引けるのは助かるけれど、他の方のレビューにも書かれているようにもう少し詳細がほしかった。

そして買ってから気づいたのだが、そもそも独自表記を覚えなくてもVBAコードをある程度そのまま動かす方法がある。

なんと、Option VBASupport 1と書くだけでExcel VBAのように書けるようになる。

Option VBASupport 1

Sub Macro1()
	With ThisWorkbook.Sheets(1).Range("A1")
		.Value = "Hello, OOo Basic As VBA"
		.Interior.Color = RGB(255, 255, 0)
	End With
End Sub

完全互換ではないので、たとえばvbYellowなどの定数は使えなかったけれど、ここまでできるならわざわざOOo Basic独自の記法を覚える必要は無いのではと思った。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。