私のサイト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ハンドブック
- 作者: 日向俊二
- 出版社/メーカー: カットシステム
- 発売日: 2014/02/01
- メディア: 単行本
- この商品を含むブログを見る
内容は表紙に記載のとおり、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独自の記法を覚える必要は無いのではと思った。