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

長くなりますが、処理はただ条件を判断し分岐させながら実行するだけなので、とても簡単です。流れを要約すると

  1. 与えられたBin型データから、分類・担当者・項目のいずれかであるかを判断する
  2. 分類または担当者ならば、NOの欄にIDを表示する
  3. 項目ならば分類方法により、名称の隣に入力する文字列を分類または担当者を判断して記入する
    予定に必要な作業量を記入する
    処理状況は入力値を使うか、実績から計算するかを判断し、記入する
    備考を記入する
    必要なチャートバーを描画する(後述します)
  4. 与えられたBinに対応する名称を記入し、セル幅に合わせて文字の大きさを縮小するオプションを設定し、Binに設定されたインデントを付加する
となります。実際のコードを下記に示しますが、ページ幅の関係上改行を繰り返しており見づらくなっています。実際のマクロをダウンロードして、OpenOffice.orgにて確認してみて下さい。

Sub DrawChart(bin As Object)
    
    Dim wk As Object
    
    Select Case bin._Type
        Case BINTYPE_CATEGORY
            wk = Categories(bin._Id)
            mdlMain.Cells(oSheet, _
                oProperty._LeftColumn, _
                bin._Row).Value = wk._Id
        Case BINTYPE_PERSON
            wk = Persons(bin._Id)
            mdlMain.Cells(oSheet, _
                oProperty._LeftColumn, _
                bin._Row).Value = wk._Id
        Case BINTYPE_ITEM
            
            wk = Items(bin._Id)
            
            Select Case oProperty._CategorizeType
                Case CATEGORIZETYPE_CATEGORY
                    Cells(oSheet, _
                        oProperty._LeftColumn + 2, _
                        bin._Row).String = _
                            Persons(wk._PersonId)._Name
                Case CATEGORIZETYPE_Person
                    Cells(oSheet, _
                        oProperty._LeftColumn + 2, _
                        bin._Row).String = _
                            Categories(wk._CategoryId)._Name
            End Select
            
            Cells(oSheet, _
                oProperty._LeftColumn + 3, _
                    bin._Row).Value = wk._Plan
            
            If oProperty._CalculateStatus Then
                If wk._Plan = 0 Then
                    Cells(oSheet, _
                        oProperty._LeftColumn + 4, _
                        bin._Row).Value = 0
                Else
                    Cells(oSheet, _
                        oProperty._LeftColumn + 4, _
                        bin._Row).Value = _
                            (wk._Act / wk._Plan) * 100
                End If
            Else
                Cells(oSheet, _
                    oProperty._LeftColumn + 4, _
                    bin._Row).Value = wk._Status
            End If
            Cells(oSheet, _
                oProperty._LeftColumn + ChartHeaderColumns + _
                    oProperty._DrawColumns, _
                bin._Row).String = wk._Note
                
            DrawChartBar(bin._Id, bin._Row)
            
    End Select
    
    With mdlMain.Cells(oSheet, oProperty._LeftColumn + 1, bin._Row)
        .String = wk._Name
        .HoriJustify = 1
        .ParaIndent = 353 * bin._Depth    '1[point] = 0.3528[mm]
    End With
    
End Sub
スポンサーサイト

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

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://shinob.blog42.fc2.com/tb.php/121-caf16b17
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
COPYRIGHT(C) 2004 POWERD BY FC2 ALLRIGHT RESERVED.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。