わたしの会社では、Excelの表に勤務時間などを書いて、週に一回提出するという仕組みがあります。毎日Excelを開くのも面倒だし、かといって週末いっぺんに書くのもデータを忘れがちでやっかい。ということで、スクリプトからExcel表に情報を記入する方法はないものか。と、ちょっと調べてみました。
まず目に留まったのが、PerlのSpreadsheet::WriteExcelというモジュール。使い方はちゃんとオブジェクト指向してて、慣れれば結構使いやすそう。
しかし、Excelファイルを読み込むことができず、読み込みには別途Spreadsheet::ParseExcelというモジュールが必要になる。これでは手間がかかりすぎるということで、却下(うまくいけばLinuxサーバを使ってリモートから書き込みなんてできそうでおもしろそうだったんですが)。
となると、OLEしかない。OLEはうちの古いExcelでもなんとか動くので、それならと書いてみました。なぜかPerlで。
OLEを使う場合、ダイアログ表示などはある程度Excelの機能を使えるので楽です。ネットのExcelマクロ関連資料を見ながらなら、結構楽に書けました。まあ、ベースがコンソールから起動の言語なので、見てくれはあまりよくないですが((ならC#でもいいじゃんと、完成後に思いました(^^;)))。
家ではPerl、仕事場ではUWSCのスクリプト。あれ?Excelマクロなのに他言語でばっかり書いてるぞ?
それにしても改めて見ると、結構Officeのマクロも使いやすいかもしれないですね。Outlookデータを利用するソフトなんかも思ったより難易度高くないかもしれない?