OpenOffice.org Basicでガントチャート
OpenOffice.orgのBasicを使ってガントチャート作成用マクロ ガントチャートforOOoを開発する手順を紹介していきます。
OSC 2008 Shimane

9月12日 13:00から、オープンソースカンファレンスが島根県松江市の松江テルサで行われます。

OpenOffice.orgに関するセッションもありますし、OpenOffice.orgに限らず様々なオープンソースソフトウェアについての情報収集ができます。

最近、観光で湧いている島根県に3連休を使って足を運んでみてはいかがでしょうか。

詳細は下記URLにて。

オープンソースカンファレンス 2008 Shimane

当日、僕もとあるブースで展示をする予定になっていますので、もし見かけたら、声をかけていただけると嬉しいです。

もくじ

連載物で内容が増えるとブログでは読みづらくなるので、目次を作ります。各項目にリンクされているので、ご利用下さい

OOoBasic
ステートメント(文法) 関数 ダイアログ、コントロール シート、セル 図形描画
コーディング
データ編集ダイアログ作成

また、ここで紹介している手順を多少前倒しした開発中のファイルを同時公開中です。下記サイトよりダウンロードし、併せて確認するとわかりやすいと思います。

OpenOffice.orgやLinuxについての覚え書き

テーマ:フリーソフト - ジャンル:コンピュータ

If ... 条件による処理の分岐

マクロの実行時に条件を判断しながら処理を分けるのに利用します。僕の作ってきたプログラムでこの処理を利用しないものはほとんどありません。基本中の基本の機能であり、また欠く事の出来ない機能であります。

[用法]

If 条件式 Then
    処理
End If

これが一番単純な使い方となります。

[例]

a = InputBox("「何か」と入力して下さい。")
If a = "何か" Then
    MsgBox "ありがとうございます"
End If

これは条件が一致したときのみの処理をしますが、次は条件が一致しなかった場合の処理を追加方法を示します。

[用法]

If 条件式 Then
    処理
Else
    別の処理
End If

[例]

a = InputBox("「何か」と入力して下さい。")
If a = "何か" Then
    MsgBox "ありがとうございます"
Else
    MsgBox "「何か」と入力して下さいよ!"
End If

また、いくつかの条件を処理したい場合は次のようにします。

[用法]

If 条件式 Then
    処理
ElseIf 別の条件式 Then
    別の処理
End If

[例]

a = InputBox("「何か」と入力して下さい。")
If a = "何か" Then
    MsgBox "ありがとうございます"
ElseIf a = "" Then
    MsgBox "そのまま閉じたか空白ですね"
End If

このようにいくつか処理を分岐し、それまでの内容に合わせて実行するマクロを切り分ける事ができます。大げさな表現をするならば、プログラミングのほとんどはこの分岐処理の組み合わせのような物だとも言えると思います。

テーマ:Officeソフト - ジャンル:コンピュータ

あとがき その1

初めは一年かけて完成させるつもりだったのが、ずいぶん急ぎ足で書いたので、ここで一段落して一旦終わりにします。

もちろん、皆さんが感じられるように僕も中途半端だという思いは否定できません。ですが、このブログを書いていて、途中から疑問を感じずにはいられなかったのです。その疑問は「果たしてこのマクロの解説は必要なことなんだろうか?誰かの役に立つのだろうか」というものです。

プログラミングもパズルのように小さな部品を組上げていけば、それが最後には大きな絵を完成させることになるのですが、このマクロは初心者に対してそれほど小さなパズルとは言えません。作っていても先が見えないというのが実情ではないでしょうか。そこに完成品があって、出来上がるとこうなるというのがわかっていても、小さな関数を連ねる僕の作風では「何をしているのかな?」という疑問を感じるばかりではないかという気がしてなりません。
では上級者向けかというと、このマクロは稚拙な処理の繰り返しであってとてもセンスのいいコードとは言えませんから、上級者がこれを読んでも得られることなどほとんどないと思います。

ということで、ちょっと題材が悪かったと言わざるをえないと感じています。Excelのマクロを解説したときは、簡易版を解説しました。大幅に機能を削減して必要最低限の機能しか作らないことで、コードの量も激減し、まさに素人向けとしてちょうどいい題材だったことを思うと、同じようなアプローチをとっておけば良かったと後悔してなりません。
また、解説もいい加減でした。自分が作り馴れてくると、一般の人がわかる範囲とわからない範囲の区別が難しくなってきて、これではいけないなと感じる部分も多々あります。

こうした幾多の反省を感じながら、初期の記事を直したくて仕方の無い衝動に何度も駆られ、でも直していれば先に進めないというジレンマをずっと抱えながら書いていて、いつの間にかやってる意味がわからなくなってきていました。

一旦筆を置きますが、今後は各部の修正に努めます。OOoBasicのTipsも不定期で追記して行きたいと思っていますし、コメントなどでお問い合わせをいただければ、きちんと対応させて頂きたいと考えています。

これまでご愛読頂いた方に感謝すると共に、がさつな記事を書き続けてきた事をお詫びします。後日、コンテンツを再整備して、胸を張って人に紹介できるような内容になったら、改めて「あとがき その2」を書きたいと思います。

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

工程表シート作成 その3

作成したマクロをシート上のフォームに割り当てる操作を行います。

フォームを編集可能な状態にしてから、フォーム上で右クリックをして「コントロール」を選択すると、下図のようなダイアログが表示されます。


イベントタブを選択すると、割り当てる事のできるイベントが列挙されるので、「動作時」の右端にある「...」というボタンをクリックします。クリックすると下図のダイアログが表示されます。





そこで、表示されたダイアログの下部にあるマクロから目的の関数があるモジュールを探し、表示されたリストから関数を選択します。そして、「割り当て」ボタンを押すと登録完了です。以降は、このボタンを押す事で目的のマクロを実行する事ができるようになります。

同様に、全てのボタンに必要なマクロを登録します。

実は、これで終わりのように感じられるかもしれませんが、このままファイルを保存して開き、ボタンでマクロを実行させようとするとエラーが出ます。エラーの「OK」ボタンを押してから、再度ボタンでマクロを実行させようとすると今度は正常に動作します。
これは、OpenOffice.orgの自作ダイアログは読み込みを指示しなくては読込まれないために発生する現象で、エラーの後にIDEが表示される事で自作ダイアログが読込まれるので、次からエラーが発生しないのです。そこで、このエラーを回避するため、ファイルを開いた時に自作ダイアログを読込むようなマクロを自動で実行するよう設定します。
ダイアログを読み込むコードは下記となります。

Sub Auto_Open
    DialogLibraries.LoadLibrary("Standard")
End Sub

次に、このマクロをファイルが開かれたら自動的に実行させるため、メニューバーの「ツール」から「ユーザー設定」を選択します。すると、下図のダイアログが表示されるので、イベントタブを選び、イベントの一覧から「ドキュメントを開く時」を選択します。その状態で、下部のリストから目的のモジュール(ここではmdlMain)とマクロ(ここではAuto_Open)を探し、選択してから「割り当て」ボタンを押します。


以上で、1ヶ月工程のシートは完成です。このシートに合わせてプロパティを書けば工程表を更新することが可能となります。また、他の期間も公開されているファイルを参考にすれば、簡単に作成できるものと考えます。

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

COPYRIGHT(C) 2004 POWERD BY FC2 ALLRIGHT RESERVED.