朝起きてTwitterを見たら、「会議をするときは参加者の時給から会議コストを算出しなさい」という話が出ていたので、私もリアルタイムにコストを表示するツールを作ってみました。
作ったもの
入手先
GitHub - MoneyCostChecker へ上げました。
基本的には好きにしていただいて構いませんが、一応MITライセンスとします。
ソースコードはsrcの中に入っており、テキストで確認できます。
ただしユーザーフォームのデザイン情報は、バイナリデータのためコピペ不可能です。
リボンコントロールのレイアウトはCustomUIというxmlファイルで行い、リボンUIからVBAのCustomUI.basに飛んでいます。
アドイン本体はbinの中にあります。
Excelアドインと、Wordテンプレートを入れておきました。
ダウンロードしたファイルは、ファイルのプロパティから「許可する」にチェックを入れないと開けない場合があるようです。
また、マクロの有効化を行ってください。
xlamを実行すると下図のようにリボンが増えます。
頑張ったこと
日付をまたいだ時の処理をどうするか迷いました。
時刻だけ入力にすると、開始時~終了時が逆転して計算が狂います。
DatePickerがあれば簡単なんですが、VBAにはないので・・・。
時刻の方はバリデーションチェックを行い、Static変数で直前の有効な時刻を保持して強引にでも動くように仕掛けました。
参加者追加の仕組みをUpDownButtonにしました。
VBAのボタンは高速でクリックすると、ダブルクリック判定となりスルーされてしまう問題があります。
アップダウンボタンなら長押しで一気にカウントアップもできるので、大人数の会議でも安心ですね♪
拡大縮小ボタンを付けました。
パソコンやモニターによっては、大きくしたいこともあるかなと思って付けてみました。
ただ、UserForm.Zoomプロパティを使うとUIがズレます。
使っていただくと分かると思いますが、ボタンやリストボックスの文字がひどい有様です。
でも、遊びで作ったものなので直しません。
気が向いたら直すかもしれませんが、期待しないでください。
最前面表示ボタンを付けました。
このツールは、他のアプリでの作業中にも見えるようにしなければなりません。
Win32APIのSetWindowPosを使って最前面表示にしました。
最大の問題点
(手抜き)Do~Loopで監視しているため、ユーザーはExcelが使えなくなります。
Altキーを押したままExcelを起動して、別のプロセスでExcelを立ち上げる必要がありますね。
またWord版も追加したので、Wordが使えなくなって構わない人はこちらのほうが便利かもしれません。
モジュールの簡単な説明とか
- FormMoneyCostChecker フォーム本体
- kccFuncCore_Partial ちゅんちゅんライブラリの一部抜粋
- utlMSForms_Partial ちゅんちゅんライブラリの一部抜粋
以上3つでとりあえずは動きます。
残りはアドイン化&リボン用です。
- CustomUI リボンコントロールのイベント処理コード
- AppMain フロント部分
リボンからいきなりAppMainのプロシージャを呼んでも動くのですが、大規模なアドイン開発のためにXMLとVBAを1:1で出力するツールを使用しているため、このような構成となっています。
開発中の動画
別件で要望があったため、ライブコーディングの風景を録画しました。
Excel VBAで会議にかかっているコストを可視化してみた
まとめ
これを使って会議や残業にかかっているコストを可視化し、自分にプレッシャーをかけましょう!
きっと人件費削減につながるはずです!
なお、ご利用は自己責任で!
同じように、ExcelやWEBで開発されている方が多数いらっしゃいます。よかったら見てあげてください。
いつになるか分かりませんが、気が向いたらイマイチなところを直します。
以上
ちなみに、以前作ったアドインはこちら。
何か御座いましたらコメント欄、またはTwitterからどうぞ♪
それではまた来週♪ ちゅんちゅん(・8・)