仕事で、ExcelVBA、いわゆる「マクロ」で、ファイル出力を自動化したりなんかしています。
今日も、「各支店が別の部署に提出したファイルを見に行って、片っ端からファイルを開けて、データを入手して集計、まとめ表を出力する」ってのを作って、運用したわけです。
あっ、もちろん“別の部署”には公認済ですよ。
実は同じデータを別々の経路で入手するので、検算になります。
かえって、重宝がられてるんですよ。
その部署とも値を合わせるんですが、時には上の方から、「この支店はこの値にしろ!」って命令が下る場合があります。
通常、マクロでは計算・集計によって正しい値を算出して、表に書き込むんですが、ある特定の支店だけを、別のルールで処理するようなプログラムって、実はかなり面倒。
処理対象がその支店かを判定しなければなりませんし、仮に数式を修正するなら、膨大な数の支店ファイルを、変更しなければなりません。
まぁ、過去には100近い支店ファイルX12ヶ月分のシートを、一括で書き換えるプログラムも作りましたが、制作に時間がかかる…
なので、取った措置は…
「マクロ運転後、手動で値を書き換える」
そう、「半自動」です。
人間にも得意・不得意があるように、マクロにも、得手不得手があります。
人間なら飽きてしまい、ミスも連発するのが、
「繰り返し処理」
マクロなど、プログラムの最も得意とするところです。
何百回、何千回、時にはループの中のループまで、マクロは正確にこなします。
「こうなるまでは延々と繰り返す」なんてことも出来ますし、値を変えながら、他は同条件で繰り返すなんてのも、得意技です。
逆に、グラフィカルな選択が必要な処理や、ある特定の条件の時だけ…ってのが大量にある場合は、もちろんマクロにもできますが、処理が複雑になってしまい、プログラムを書くのに時間がかかります。
1回しかしない処理だったら、果たしてマクロにするのが得策?って疑問も湧きます。
今回の値の変更も、マクロにできないこともないんですけど、やっぱり複雑になりそうだったので、敢えてマクロにはやらさない選択をしました。
何でもかんでも、マクロ化すればいいってわけじゃあ、ないのです。
とは言え、だんだんそういう処理が増えていって…、
今ではマクロ処理後、14件も手動で処理を施すことに。
…正直、マクロ化を考えたりしてます。。。