【LibreOffice】Excel VBAマクロを使う方法

  • 投稿 : 2019-09-01

要約

Option VBASupport 1

Option VBASupport Statement

マクロの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の互換性について

VBAマクロの実行は、自己責任で!!Excelでブロック崩し・ブロック崩しゲームを創る - 情報授業実践記録上記をみて、ちょっと興味を持ちました。上記にソースは公開されてる

某氏の猫空

少し使ってみて互換性が高そうなので、ゲームも動作するよ!!っていう話でまとめたかったんですが、実際にはそうならず。

420 無効なオブジェクトリファレンス
423 属性またはメソッドが見つかりません
424 オブジェクトが必要です
425 無効なオブジェクトの使い方です
Basic プログラムのデバッグ - LibreOffice Help

実行すると、こんなエラーに。エラーコードを調べると「属性またはメソッドが見つかりません」で、たしかに「TopLeftCell」がサポートされてなさそう。

スポンサーリンク