Excel+

 昔、MS-Accessはシェア獲得のためでしょうか、MS-Officeに「バンドル」され、比較的安価に入手することが出来ました。が、遥かに優れたBorland Paradoxを駆逐し、一方ではdBaseを虐めた結果、市場を独占できる目処が立つと、あたかも独立の製品のように値上がりして手に入れにくくなってしまいました。

 よく考えると、データベースソフトなど使う個人は極めて少ないわけですから、MS-Officeにバンドルされなくなっても、特に困る人はいないわけです。データベースソフトなんてデータがなければ只の箱です。で、データベースからデータを取り出すためには、予めデータを入力していないといけないのです。データベースソフトが必要なほど大量のデータを入力する労力を、普通の人が払うわけがありません。
(例外、うちのニョーボはフォームを作って雑誌やチラシの住宅情報をデータベースソフトにせっせと入力していた。プルダウンメニューから鉄道の路線名を選択すると、最寄り駅としてその路線の駅が選択可能となる作りには唖然。住宅ローンの支払い計画はもちろん表計算ソフトで作る。ニョーボにパソコンを理解させたい方々、家を買う計画を建てるのに便利だよと言えば一発ですぜ。)

 でも、MS-Accessでもいいからデータベースソフトがあればなあ、と思うときがたまにあります。MS-Excelのワークシートを結合させたいときです。一方に店番号と店名の対照表がある。一方に店ごとの設置クライアント一覧があってこれは店番号しか持っていない。ほしいのは店名ごとの設置クライアント一覧表。もちろん双方ともMS-Excelのワークシートに落ちている。そんなに特殊なケースではないと思います。
 こういうとき、両方のワークシートをMS-Accessにインポートして、店番号をキーに2つのワークシートを結合させ、店名と端末名のペアを得る。インポートの手間はかかるし、定型的な作業でもいちいちGUIで指定しなければならないのはうざったいけど、ああAccessがあってよかったなあと素直に感じる時です。
 MS-Accessを使っていたころは、このようにしてワークシートを結合させていたわけですが、MS-OFFICEのバージョンアップを機にMS-Accessがなくなってしまいました。どうしよう。まあ、3ヶ月に一度だし、100件程度だし、と手で店名をCut&Pasteしていましたが、あるときいきなりこれが500件以上に。ええい、台風で早く帰れて時間あるし、プログラム書いちゃえ。
 ずいぶん久しぶりにプログラムを書くので「行と列」を間違えたり、OLEで呼び出せない中途半端なプロパティがあったりしてちと難儀。例によってGUIは使いません。ワークシート結合の仕方はiniファイルに書いていってください。

 で、完成。ふーん、結構時間かかるのね。500行×500行で順次検索かけてるからなあ。でも、MS-Excelとはあまりかかわりあいたくないので、結合する元の表は一気に読み込んで、プログラム内部では二次元動的配列に押し込んでます。結合先の表をキー順にソートすれば少しは早くなるかな?でも二次元動的配列のソートって、、、やめます。
 何しろ必要に応じて作りましたものですから、そんな風にあちこち手を抜いています。

ここで手を抜いたところを列挙しますと
結合できるのは、各ワークブック1枚目のワークシートだけ。
結合時のキーに指定できる項目は、一列だけ。
結合時のキー列に空白のセルがあっても無視してしまう。
結合結果のワークシートでは、各セルの書式が全てデフォルトになる。(元セルの書式が文字列であったとしても、中身が数字だと、リンク後のワークシートでは数値として扱われる。要するにCSVファイルをインポートしたようなもの。)
 
結合しようとしたファイルがMS-Excelのファイルでなかった場合のエラー処理はMS-Excelに任せっきりである。(MS-Excelを中途半端に立ち上げたまま、ろくなエラーメッセージも出さず落ちてしまう。)
結合後のワークシートの列数が256を超えた場合のエラー処理はMS-Excelに任せっきりである。
 
結合結果のファイルと同名のファイルがあった場合は、いちいち問い合わせダイアログボックスが出る。(個人の趣味では、あらかじめどう処置するかiniファイルに指定しておくことが多いのだが。)
結合するファイルの位置はフルパスで指定する必要がある。(MS-Windowsのバージョンによってカレントディレクトリの意識がまちまちなのです。)
 
アイコンと使用説明書をまだ作っていない。
 なお、プログラム名、いつも悩みます。2つのMS-Excelファイルを結合し、「結合」はデータベースの用語では「リンク」ですから、Excel+Linkで「Excelink」と安易に流れようとしたのですが、今や大多数の人が「リンク」と聞いて連想するのはWWWでいう「ホームページへのリンク」でしょう。とすればExcelinkなどという名前にすると、セルからWebへのリンク機能をMS-Excel95にも付け加えようなソフトをイメージされる可能性が大です。
 なわけで、ソフト名はさらに安易に「Excel+」にしました。ここで「Excel++」にするとMS-ExcelのVBAをオブジェクト指向に拡張した、VBAのプリプロセッサのようなものと考えられそうです。なお、「Excel+」という名前でGoogleで検索をかけて、かぶっているものがないことくらいは確認しております。(ちなみに「Excelink」で検索すると新規オレフィン系熱可塑性エラストマーというよく分からないものががヒットしました。)

 で、早速公開・・・といきたいところですが、手抜きのところでも言いましたように「まだアイコンと使用説明書を作っていない」。ああめんどくさい。

公開場所
未公開
フリーソフト開発秘話、目次
ホーム