OpenOffice.org Basicでガントチャート
OpenOffice.org Basicを使ってガントチャート作成用マクロ ガントチャートforOOoを開発する手順を紹介していきます。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
セルの値取得、入力(補足)

ちょっと強引なやり方をすれば、限りなくExcelに近づけられることがわかったので紹介します。まず、重要な要素として言えるのがOOoBasicではモジュールもオブジェクトとして扱う事ができるということです。

モジュールを追加して、名称を「mdlExcelSheet」とします。そして、そのモジュールに下記のコードを追加します。

Option Explicit
Dim oSheet As Object
 
Function Cells(Row As Integer, Col As Integer) As Object
    
    If IsNull(oSheet) Then _
        oSheet = ThisComponent.CurrentController.ActiveSheet
    Cells = oSheet.getCellByPosition(Col - 1, Row - 1)
    oSheet = Nothing
    
End Function

ここでは、ExcelのCellsが「列、行」の順で指定するのに対し、OOoBasicのgetCellByPositionでは「行、列」で指定する事の違いと、セルの数え方が0から数えるのに対し1から数えるという違いを吸収できるように考えておきます。

次にマクロを実行させるモジュールを追加して、下記のコードを追記します。

Function Sheets(SheetName As String)
    
    mdlExcelSheet.oSheet = ThisComponent.Sheets.getByName(SheetName)
    Sheets = mdlExcelSheet
    
End Function

これを利用すると、下記のようなコードでセルを参照する事ができるようになります。

Sub Main
    
    MsgBox Sheets("表1").Cells(2,1).Value
    
End Sub

また選択中のシートを操作する場合、

Function ActiveSheet
    
    mdlExcelSheet.oSheet = ThisComponent.CurrentController.ActiveSheet
    ActiveSheet = mdlExcelSheet
    
End Function

という関数を追加する事で次のように実現できます。

Sub Main
    
    ActiveSheet.Cells(2,1).Value = 123
    
End Sub

今後、OpenOffice.orgはExcelとのマクロの互換性が向上するらしいのでいつまで必要かはわかりませんが、いろいろと使える手法ではないかなとも思います。モジュールがクラスみたいにNewステートメントが使えるようになるともっといいですね。

スポンサーサイト

テーマ:OpenOffice.org - ジャンル:コンピュータ

コメント
この記事へのコメント
不明
oSheet = ThisComponent.CurrentController.ActiveSheet
引数がオプションでありません
と表示されてランタイムエラーになってしまいました。
2009/06/04(木) 23:23:55 | URL | sen [編集]
不明 さんへ
モジュール名はあってますか?
シート名は「表1」になってますか?

ちょっとしたところでランタイムエラーになるみたいですよ
2009/09/04(金) 16:05:49 | URL | よした [編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://shinob.blog42.fc2.com/tb.php/84-7ef8a0bf
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
COPYRIGHT(C) 2004 POWERD BY FC2 ALLRIGHT RESERVED.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。