Novellが出してる派生OpenOfficeはVBA互換だが、本家オリジナルはVBAと完全な互換性はないので、めんどくせーなーと思いつつOOoBasicで書き直した。
※会社にはNovellのでいいじゃんと訴えたが、派生はダメなんだと。
OOoBasicはVBAとちがって圧倒的にサンプルが少ない。
今回は連想配列に苦労した。
VBAの連想配列も、あまりスマートではないが、エクセル版は「Collection」を使っていた。
Dim aName As New Collection aName.Add 1, Cells(1, 1).Value
OpenOfficeでどうやろうかとググったがなかなかない。
頭をかかえていると、VBA向けのCreateObjectを使う連想配列を見つけた。
VBで連想配列
CreateObject で 外部APIを呼ぶ・・・
ということは、OpenOfficeがCreateObjectを使えればいいわけか。
で、ググったが出てこない。OpenOfficeのhelpを探したら、あった!
'UNO オブジェクトを作成します。Windows では、OLE オブジェクトも作成できます。 'このメソッドにより、パラメータとして渡されるタイプのインスタンスが作成されます。 '構文: oObj = CreateObject( type )
で、やってみたら・・・
できました。できましたよ。ふーーつかれた。
REM ***** BASIC ***** Option Explicit Sub Macro1 ' 宣言部 Dim oSheet As Object Dim oCell As Object Dim oObj As Object ' 初期化 oSheet = ThisComponent.Sheets(0) oObj = CreateObject("Scripting.Dictionary") oCell = oSheet.getCellByPosition(1,1) ' もし配列キーが存在したら If oObj.Exists(oCell.getString) = True then oObj.Remove(oCell.getString) ' 削除して oObj.Add(oCell.getString,5) ' 作成 Else oObj.Add(oCell.getString, 1) ' 作成 End If ' 値を入れる oSheet.getCellByPosition(2,1).String = oObj.Item(oCell.getString) MsgBox "完了しました" End Sub
まーこうしてすこしずつでも使えるようになれば、いつかは使いこなせるさ。
免責
この記事やプログラムによって生じた事故・損害などは一切保証致しません。ご自身の責任でご使用ください。
子育てブログ「おとう日記」はじめました。
興味ある方、是非ご覧下さい!
おとう日記
コピペプログラマの倉庫を作りました。
サンプルプログラムなど置いておきますのでお立ち寄り下さい。
コピペプログラマ倉庫
良ければ↓投票お願いします↓ m(._.)m ペコッ
人気ブログランキングへ
0 件のコメント:
コメントを投稿