LibreOfficeでVBAを使う方法。1行おまじないを書くだけ!
2017/09/26
前回は、LibreOfficeのMicroOfficeからの再現性が高くなって、図形はほぼ100%再現できたことを書きました。
ここで、「あとはVBAさえサポートできれば完璧だ」というようなことを書きましたが、なんとすでにVBAが使えるようになっていたことを知って驚いております。
さっそく試してみました。
[ad#top-1]
普通にVBA書くとエラー出ます
試しにLibreOffice Clacのマクロエディターで、VBAを記述して実行してみました。
A1セルに「Test」という文字列を入力するという意味の、Range(“A1”) = “Test” というおなじみのコードです。
結果はご覧の通りエラーが発生しました。
LibreOfficeのマクロ(LibreOffice Basic)で、A1セルに文字列を入れたい場合は以下のようなコードになります。VBAとは大きく違いますね。
LibreOfficeでVBAを使ってみよう
LibreOfficeでも、”あるおまじない”をするとVBAが使えるんです。
それは、エディタのトップに、Option VBASupport 1 という一文を入れるだけ。これだけでVBAが使えます。
上記のプログラムを実行すると、ご覧の通りちゃんとA1セルにTestというテキストが入ります。
どこまでVBAをサポートしているのか?
VBAをサポートしているとはいえ、すべてフルサポートしているとは思えず、どこまで機能が使えるのか気になるところです。以下のコードをサクッと作ってみましたが、とりあえずちゃんと動きました。Cellsによるセル参照や、For文とWhile文は大丈夫そうです。
Option VBASupport 1 sub Main Range("A1") = "Test" For r=2 to 7 Cells(r, 1) = r-1 Next r r = 2 Do While Cells(r, 1)<>"" Cells(r, 2) = Cells(r, 1) * 10 r=r+1 Loop end sub
実行するとこんな感じです。
それ以外にも・・・
Application オブジェクトは使えた
Range("A1") = Application.Round(1.222, 0) Range("A2") = Application.Min(1.222, 1.32, 2.5, 0.98) Range("A3") = Application.Max(1.222, 1.32, 2.5, 0.98)
Functionプロシージャも使える
sub Main3 Range("A1") = TestFnc(10) end sub Function TestFnc(a) TestFnc = a*10 End Function
今日の結論:意外と使えそう
今回は基本的なさわりだけでしたが、これから色々試してみます。結果が出たらまた報告します。
正直、ここまでサポートできているとは素直に驚きました。
■関連記事■
[ad#ad-1]
スポンサーリンク