Notesの構造化テキストをMS-Excelに読み込む

 自宅でSolarisが動いてたって人はそんなに珍しくないと思うが(LinuxはともかくSolarisは十分珍しいような気はするが)、なんと我が家ではLotusNotesまで動いていた。しかしながらNotesデータベースにデータを入れると整理はつくが取り出して扱うというのがやりにくいという欠点がある。企業で使っているNotesならなおさらであろう。

 ところがNotesで一元的に管理、なんてのがはやってくると、なんとなーくデータが取り出しにくくなる。しかしNotesに入れてくれているおかげで、多種類のデータを閲覧することが出来るようになったのも事実。で、こいつらを見ながら「全データ引っ張り出して、集計し、傾向を探りたいなあ」なんて思うこともあるわけだ。私は地道なデータ処理もやれるタイプなのである。(問題は妙に「気づく」ことである。)

 Notesのメニューをいじっているうちに、[ファイル]-[書き出し]なんてのがあることに気がついた。まあCSVなんかを出して使っていたが、Structured Textなんてのを選ぶと、登録内容がごっそりフラットファイルに出るではないか。(拡張子にtxtがついてないので二の足を踏んでいたが、エディタで開ける。そして確かにテキストファイルではないのだ。)
 そこで都度、awkスクリプトなどを書いてタブ区切りファイルなんぞにしていたがある日、「めんどくせえ」と切れた。awkは時々ファイルが見つかりません、と言って走ってくれないのだ。typeコマンドでキッチリ出力されるのによ。たまたまその日は忙しくなかったので(暇つぶしに定例業務をマクロ化していたら、どんどん暇になるという悪循環に陥ったノダ)VBAにコンバートした。こういう時はLotusScriptをOLEで使うとカッコいいのだが、Structred Textで書き出すという手段がある以上、早く書けたほうがいい。だいたい読込先としてNotesDB名とサーバー名を確認するくらいなら、エクスポートファイルを直接指定したほうが早いだろう。(と、自分のスキルのなさを隠し通す。)

 要するに項目名とデータの間はコロンで区切られ、レコード同士は良く分からんがバイナリで区切られるのだな。ワークシートの1枚目に、抽出する項目名(Notesの内部名)とそれを扱いやすく読み替えるものを書いて、マクロ実行すると、読み込みファイルを指定するダイアログが出て、ファイル名の拡張子を除いた名前でワークシートが出来て、そこにダダダダと書き込む。awkよりも時間はかかるが、まあいいや。
 一応の完成を見たところで、似たようなソフトないかなと探してみた。
 Lotus Notes To Excel R5なんてのがあるのね。なあんだ。が、R6.5やR7では使えないとか。Lotus Notes CSV/XML Export Plug-Inこれは便利そうだが古い。
 なあんだ、もう使う人のいないソフトなのか。

 でもまあ、折角だからもう少し完成度を上げて・・・これ、読み込む項目名を探して/書き込んでいくのが結構面倒なのよね。そこで、読み込みファイルを指定すると、第一レコードを読み込んで、項目名を先ほどのシートに書き込んでくれる機能をつけました。で、それを編集するの。読み込んだ先のMS-Excelシートはセルの表示形式を指定できます。標準のままだと0からはじまるコードを読み込んだところ、0が落ちたりするからね。数字をなぜか日付のシリアル値にしてくれたりってのもある。で、当然、読み込んだファイル名はシートに残しておいて参照しますので、同じファイルを再度指定する必要はございません。まあ、こんなもんかな。

 Vectorに公開しようかと思ったが、同様の目的で書かれたソフトで既に公開されてるやつの方が機能がかっこいいし、一時期はどうか知らんが、時代遅れとなったもののようだし。ちょっと残念。まあいいか。自分で使うから。

フリーソフト開発秘話、目次
ホーム