C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA

仕方なく、OOoBasicをやってみました2

こちらの続きです。
仕方なく、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と同じですね。 まねしなくても良いのに・・・。