こちらの続きです。
仕方なく、OOoBasicをやってみました1 - C#ATIA
個人的な印象です。
○エディタが貧弱
本当に最低限の機能しか無いのでつらいです。 が、昔は専用の
エディタが無かったような気がするので、あるだけありがたいです。
とは言え、自動補完が無いのはしんどいです。
最初は、ローカルウィンドウが何も表示されないので機能していないのかと
思ったり・・・。
○クラスモジュールがない
自作のクラスが作れないようで、データの管理をどうしようかと
思っていたら、ユーザー定義型は利用できるとの記載を発見しました。
AddinBox/VBAユーザーの為のOpenOffice.org 備忘録:「ユーザー定義型」を使う上での注意事項
これであれば何とかなりそうです。
○CreateObjectが利用できる
これが出来なければ、OOoBasicを利用するのを諦めていたかも知れません。
助かりました。 CreateObjectが出来るので、FileSystemObjectを
利用しファイル操作が楽になります。
又、ユーザー定義型はコレクションには突っ込めないのですが、DotNetの
ArrayListが利用できるので、面倒な動的配列ともおさらば出来ました。
○VBAとの互換性が結構ありそう
OOoBasicエディタが弱いので、メソッドレベルのものであればVBAエディタで
作成して最後にOOoBasicに持ってくれば良い気もします。
製作してみたものの一部ですが、それほどVBAと大差無いだろうと思います。
'OOoBasic '*****システム関連***** '配列のコレクション化 Private Function AryToList(Ary As Object) As Object Dim List As Object List = CreateObject("System.Collections.ArrayList") For i = 0 to UBound(Ary) List.Add Ary(i) Next AryToList = List End Function '*****ファイル関連***** '読み込み専用ファイルのチェック 'True-読み込み専用ファイル Private Function IsFileReadOnly(ByRef FileName As String) As Boolean Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") IsFileReadOnly = IIf((FSO.GetFile(FileName).Attributes and 1) = 1 , True , False) Set FSO = Nothing End Function
"Set"の必要性が有るのか無いのか良くわからないのですが、動いたのでこのままにしています。
VBAではマイナーな三項演算子(IIf)も使えました。
Functionの戻り値は、関数名に代入する方法もVBAと同じですね。 まねしなくても良いのに・・・。