ソフトを開発しようと思った動機、背景
もともとの開発経緯は、社内にあるExcel掲示板で自分も含め、何人かが便利なマクロや開発手法を公開していたことにあります。自分がそれらをまとめて簡単に実行できるようにしようと「Excelアドイン」にしたのがはじまりです。自分の仕事は出向が多く、お客さまのパソコンをお借りすることがよくあり、フリーソフトを入れることが容易ではありません。そのため職印機能や正規表現での検索機能、ツリー構造の取得機能など、ほかのフリーソフトを使うところを自前で作成したため、これだけの機能が増えてしまいました。
開発ツールも自由に入れられないのでExcelのVBA一本槍です。その点、Excelは簡単にプログラムができて、最適なツールであったわけです。また、Excelのバージョンも選べません。「2007」以降のテーブル機能を「2003」で使いたいがために「かんたん表」を作成しました。結構苦労人なんです(笑)。
開発中に苦労した点
なるべくVBAのみで作成している点です。Windows APIもなるべく使いません。画面のコントロールも標準のもののみを使用しています。さまざまなOS(Windows 8/7/Vista/XP)やExcelのバージョン(2007/2010/2013、32/64bit)で動作するように気を使っています。いつどんな客先にいってどんなプラットフォームを渡されるかわからないからです(笑)。そのことにより息の長いソフトにするという目論見もあります。
逆に制約があるため、工夫のし甲斐があります。リストのヘッダや処理状況を表示するゲージは「ラベル」だったりとか。そのへんの工夫が大変です。
プログラムの実装自体はシンプルな機能ばかりなのであまり苦労はないのですが、機能が多いため、面倒くさくなくスピーディに機能を追加することを考えて、フレームワークを作成しています。例えば、メニューに表示される「機能名称」やそこにカーソルを当てると表示される「チップヘルプ」、ヘルプを選択すると表示される「ヘルプ表シート」を一つのシートで管理し、情報を一極化しています。
リリースノートやホームページへの転載も、自分の作った「EXCEL表をテキストに変換」「EXCEL表をHTMLに変換」で更新できるようにしています。
「RelaxTools」は、範囲を選択して処理を行うことが多いのですが、この場合にもフレームワークを作成し、必要な処理部分(例えば、ひらがな→カタカナ変換)のみを作成するだけで必要な処理が行われるようにしています。
ユーザにお勧めする使い方
「セル・シェイプの正規表現検索」で検索結果を選択すると、検索結果であるセルやシェイプも同様に選択されます。検索のウィンドウを表示させたままでもセルを編集することが可能ですから、それを利用してセルに対する処理を行うと便利です。
「ExcelファイルのGrep」は、ネットワークのフォルダを選択すると遅くなります。ファイル数が多くなると応答しなくなる場合もありますので、ファイル数が多い場合にはローカルのハードディスクにコピーしてから実行することをお勧めします。
「★(お気に入り)」機能で≪複数ファイル≫を選択して開くと便利です。≪読み取り専用≫でも開けます。大量にシートがあるブックなら「シート管理」が便利。シートを選択するだけにも使えますし、範囲でのソートもできますから、表紙などソートしたくないシートを除外してソートすることが可能です。
「横中線の削除」は地味に効くコマンドです。セルをなるべく連結したくない人が大分類、中分類、小分類など分かれているような表を作成するときに重宝するでしょう。
「美しすぎるSQL整形」はエンジニア向けですが、本気で作りました。かなりの精度で整形が美しくできると自負しております。
今後のバージョンアップ予定
最近になってたくさんの人の目に触れることとなったため、品質の向上が直近の目標です。平日に不具合の修正、機能追加。週末にリリースというサイクルになると思います。追加したい機能もまだいくつかあり、最終的には200前後を目指す予定です。
機能がたくさんあり、単体では使い方がわかりづらい部分や組み合わせることで威力を発揮したりすることが多々あるため、ホームページのコラムを充実させて、便利な使い方を提案してゆく予定です。
謝辞
H.S 様──あなたがいなければそもそもこのツールは生まれてきませんでした。
H.T 様──あなたの「イイネ!」と評価がなければ、ここまで大きなツールにはなりませんでした。
S.T 様──「For Each r In Selection」の記事が本ツールの骨格になっております。
妻──自分のツール作成を温かく見守ってくれていることに感謝!
そして「RelaxTools Addin」を使ってくださっているみなさま、ありがとうございます。
(Y.Watanabe)