弊社の勤務記録表を作り直してみようと思ったことがすべての始まり。
そして頓挫したフェルマータ的ぽえむ。めげないぞ。
ただの愚痴と言われても仕方がない
書いている人間はノリツッコミがひどい
はじめに
作り直すに至ったまでの経緯
背景
筆者が所属する部は、昨年度まで別の会社の部署だったのだが、今年度から同じグループ会社である弊社に移籍した部署である。4月から弊社の規則に従うようになり、弊社の利用する勤務記録表を使うようになった。ようやく半年が経過したところである。
しかしこの勤務記録表がかなりの問題児であった。
初めての勤務記録
説明書となるエクセル文書と実際に勤務記録を行うxlsファイルを渡されれば、とりあえずはまあ説明書を見ながら記録をしてみようとなるはずだ。私もそうだった。
まず説明書を見ながら、勤務記録ファイルを立ち上げようとする。
「他のエクセルを開いたままこのファイルを開かないでね!」←エラーメッセージ
f**k!
やめたらこの説明書
気を取り直して説明書を軽く全部読んで暗記。
さあ開くぞと意気込み、開いていろいろ弄ってみた。
使いづらさには目をつむるとして…
ボタンが押せないのにも目をつむって……
リストボックスが動かないのにも目をつむって……
勤務時間計算がおかしいのにも目をつむって……
とりあえず記入を完了した。
最後に保存をしようと思い、何気なくCtrl+Sを押す。(わりと当然だと思う。)
「(なんかのエラーコード)(正直どんなのか思い出せない)」→エクセル落ちる
f**k!!
まだ大丈夫、まだ大丈夫と持ち直して入力し直すために再度勤務記録ファイルを立ち上げる。
ファイルが破損していて開けない。どうやら勤務記録ファイルごとファイルが破損したようでもう二度と立ち上がらない。
f**k!!!!!!!!!!!!!!!!
エラーの洪水
勤務記録表はExcel2003-2007様式で作成されており(xls形式を用いるためか?)、Excel2016で開くと何故か落ちる。開けるエクセルのバージョン(2013で開けるのは救い)で開いても、少し意にそぐわない動作(Ctrl+Sもダメ!)をするだけでエラーの嵐。落ちるエクセル。戻らないデータ。さらには実際の勤務形態に即しておらず計算がまともにできない。勤務記録表の意にそぐうように自らの勤務時間を変更する始末。
いやあかんやろ。
それってもう勤務記録表として成り立ってへんやろ。
業務でのスキマ時間ができたので弊社のえげつなく使いづらい勤務記録表を作り直してみることにした。
というわけでとりあえず中身のVBAを見てみることに。
修正の記
問題点の洗い出し
眠らせたマクロを起こさないように、さながらオオカミの腹をかっさばいて中をのぞくような感覚でプログラムをのぞいてみた。
詳しく述べるのは避けるが……臓器が臓器の体をなしていない。そこに機能をもつものなど存在せず、茫洋たる荒海が広がっているだけだった。原生生物の構造を見るほうがまだ面白いものだ。
赤ずきんもおばあさんも、どこかにはいるのだろうが目を凝らしても波が邪魔をする。同じような波が何百と押し寄せてくる。(個人的に2度以上同じコードを書くくらいなら切り出せよと思っているので開いた口が塞がらなかった)。
この体に与える食物への消化処理も、食物側に依存している。入力制御等の最低限のチェックはされているものの、その関門をひとつ突破してしまえば何のその。体内の奥深くに入って初めて異物であることを認識する(たまに認識すらしない)。
デザインに関して一つだけ言うなら保護を外すと罫線が1本1本外れる。
最初から作り直すほうが早いのでは?
十分条件の洗い出し
xls形式を守っていくことのメリットが存在しないのもあり、いっそ1から作ってしまうほうが簡単であることに気づいた私は逆に何が必要なのかを見直すことにした。最終的に
- 作業工数と各時間がわかるcsvの出力
- 当月の休暇取得日数等がわかるcsvの出力
- 各csvを見やすくまとめたエクセル表
この3点があれば良いことがわかった。csvを作成するにあたっての条件等は現行プログラムにかかれている条件を精査することで実現可能だ。
さあつくるぞ。
勤務記録表の作成→完成
周囲からの希望も織り込んだ上で、
- 記述が少ない
- 修正しやすい
- 画面移動が少ない
- 一般的な使い方をしてもエラーが出ない
以上の要件も満たした勤務表を作成することに( 当たり前では?などと言ってはいけない )。追加で「Webで記入してそのまま提出できたら嬉しい」等の希望もあったが、まず今までの体裁をそのまま利用できてデザインを大して悩む必要のないxlsm形式を採用した。
メンテナンスを行いやすいような設計を目指し仕様書を作成、上司に仕様の確認を取る。メソッドの切り出しに注意し、個別でのテストが行えるようにテストコードを作成(大したものではないのでこの部分はもっと勉強したい)。総時間にして5日ほどで一旦完成した。
現行プログラムにある条件を考慮し、部内の希望も叶えた勤務記録表である。
挫折の経緯
テスト使用ということで数人にテストをお願いした。他部署の人間と関わることがほとんどないうちの部署だが、私の知る数少ない他部署の人間にテストをお願いしたときのことである。
「ここの条件がテストに含まれていない」
と教えてもらった条件の中に、自分たちが使っているものとは明らかに違う条件が出てきた。
何やらおかしいと思い詳しくすり合わせてみると、どうやら以前から存在していた部署には通達されていたルールがたくさんあるらしい。今年から移籍してきた筆者の部署にはそれが伝達されていなかった。
いやええんかそれ。あかんやろ。
他部署の上の人間に必要な項目を改めて伺おうにも勝手に作製するなんてと叱責されて終わってしまったので結局真に必要な項目がわからず作業を中断するしかない。
うーん。なんだかな。
反省
個人の空き時間とはいえ作ることを先に(もっと上の人間にも!)言っておけばこの時間はなかっただろう。VBAの勉強ができたのはありがたいことなのでスキルとして繋げさせてもらうが。
それにしてもなんだかすっきりしない心情のまま――今日も懲りずに作業の効率化を図るのであった。