オルタナティブ・ブログ > 一般システムエンジニアの刻苦勉励 >

身の周りのおもしろおかしい事を探す日々。ITを中心に。

帳票を印刷するプログラムで意外とwordが良かった

»

自分自身は表計算ソフトをワープロ代わりにすることはあまりないのですが、開発部署にいたときは印刷処理で表計算ソフトを使うプログラムをいくつか手がけました。

表計算ソフトをワープロ代わりに使っている噺、その後:THE SHOW MUST GO ON:ITmedia オルタナティブ・ブログ

表計算ソフトをワープロ代わりに使っているのを見るとやっぱりのけぞってしまう:THE SHOW MUST GO ON:ITmedia オルタナティブ・ブログ

サーバサイドのプログラムですと帳票生成系のプラグインを入れてPDFでダウンロードさせるというのが定石になっているかと思います。デスクトップアプリケーションで、かつPC環境がよく整備された(統一されている)場合によく登場するのがVB+Excelです。

あるプログラムでは、帳票印刷時の制約条件として、出力される文字の量が多いときと少ないときの差が激しいという特徴を吸収しなくてはなりませんでした。

Excelは1セルの文字列が多くなってくると意外と困ったところがあります。セルの高さ調整であったり、禁則処理であったり、はたまた結合セルや改ページ等に癖があり、美しい帳票を作ろうと思うとなかなかうまくいきません。また、行間や文字間隔の調整まで行おうと思うとやはりWordに軍配があがります(当たり前ですが)

等幅フォントを使い1行に入る文字数を計算して、改行を挿入し、というプログラムを見て「HOSTかよ!」とツッコミをいれた記憶もあります。

そんなときに登場するのがWordです。WordのマクロをExcelと同様に使うと改行や禁則等をほとんど気にせずに帳票を作ることができ、なかなか具合が良いです。Excelのマクロ機能は比較的よく知られているのですが、googleの検索結果等を見てもWordのマクロ機能はあまり話題になっていないですね。不思議です。

Wordマクロでコツになるところといえば、文字の挿入処理がめんどくさいという点を解決することです。Excelのようにcell(“A1”)のような簡潔かつ確実な指定ができないため、Wordでは置換を使うと便利でした。帳票のテンプレートを生成し、あらかじめテンプレート内の各箇所にtwitterのハッシュタグのような#hogehoge_3u42owercxj#というような文字列を埋め込んでおきます。それを検索対象文字列に指定してマクロから置換してやれば、自力で文字列の位置を割り出すことなく帳票の好きな欄に指定文字列を送り込むことができます。

ただこのような作り方をしたプログラムをサーバサイドに持って行こう!という話になると移植者が大変な思いをすることになりそうです。これもひとつのバッドノウハウと言えるかもしれません。

Comment(0)