要約
Option VBASupport 1
マクロの1行目に上記を書くだけで、VBA互換として動作します。
かなり互換性はあると思うが、躓いたときに自身で解決できない可能性&ネットに情報があまりないというのはあると思う。
EXCELがないけど、EXCAL VBAマクロの勉強したい、簡単なサンプル動かしたいという程度なら使えると思う。が、これも落とし穴があって、動かない時&エラーになった時に、自身が間違ってるのか?LibreOfficeだからか?の区別がつかないと思う
全角スペースの問題
ネットでプログラム(VBAマクロ)をコピペした時に、全角スペースが混ざってて動作しないとかいうのがたまにある。理由は不明だが、EXCELのほうに貼り付けると、全角スペースが半角スペースに自動で変換してくれて、何もなかったかのように動作する。すごい親切機能だと思う。
LibreOfficeでは、全角スペースだと絶対に動作しないので、コピペするときは注意!!
実際に動作させてみる
メニューバーの「ツール」=>「マクロ」=>「マクロ管理」=>「LibreOffice Basic」を選択します。
Option VBASupport 1
REM ***** BASIC *****
Sub Main
With Worksheets("Sheet1")
For i = 1 To 10
.Cells(i, 1).Value = i
Next
End With
End Sub
上記のようなコードを動かしてみます。普通に動作します。
「Option VBASupport 1」がないと、エラーになるのも確認できるかと思います。
ファイル保存時に注意
・ods形式 =>情報の欠落なく完全に保存される
・Excel2007-365のファイル形式の場合は、xlsm(マクロ有効)でないと、VBAマクロの情報がすべてなくなります。
「Excel2007-365 xlsm(マクロ有効)」「Excel97-2003 xls」であっても、条件によって、VBAコードの一部の情報がなぜか落ちます。互換性のない部分が落ちるのかも。
あと、Excel(マクロ有効)のファイルを読み込んで、ods形式に書き込んでも、互換性のない部分は削除されてしまうようです。いろいろこのあたり、ハマりどころがありそうです。
マクロ関係のセキュリティーの設定
ファイル保存時に「Excel2007-365 xlsm(マクロ有効)」がない場合は、このあたりの設定を変更すると出てきた記憶が・・。
VBAの互換性について


少し使ってみて互換性が高そうなので、ゲームも動作するよ!!っていう話でまとめたかったんですが、実際にはそうならず。
420 無効なオブジェクトリファレンス
423 属性またはメソッドが見つかりません
424 オブジェクトが必要です
425 無効なオブジェクトの使い方です
Basic プログラムのデバッグ - LibreOffice Help
実行すると、こんなエラーに。エラーコードを調べると「属性またはメソッドが見つかりません」で、たしかに「TopLeftCell」がサポートされてなさそう。