なぜか、今年から家計簿を複式でつけている。それについてのツッコミはまた置いといて…、問題はデータの集計方法。仕訳帳シートにどんどんデータを入力していったとして、総勘定元帳的なシートはどうしようかな?と考えていたところ。たとえば現金だけのシートを作るのに、仕訳帳から「ソート」機能でデータをピックアップしてコピー&ペーストしていたのだけれど、このソート機能がめっぽう使いにくいので。
Excel で SQL が使えると便利なんだけれどなーと思っていたところ、こんな記事を発見。 Excel から ADO (ActiveX Data Objects) を使って、データの SQL 操作ができるようにする VBA スクリプト。使い方やコードも紹介されているので、リンク先から確認してもらえばいいのだけれど、ちょっとつまずいた点だけ書いておく。リンク先サンプルデータ「ESQL.xls」の ESQL と ClearCells と CommandButton1_Click の関数を Excel 2010 のブックにそのまま移植したとして…。
まずは、Excel で VBA マクロと ADO が使えるようにするための設定。
- Excel ブック保存のときに「Excel マクロ有効ブック (*.xlsm)」で保存。
- Excel の「ファイル > オプション > セキュリティ センター」、「セキュリティ センターの設定」から「マクロの設定」を「すべてのマクロを有効にする」に。
- VBA の「ツール > 参照設定」で「Microsoft ActiveX Data Objects 2.8 Library」にチェックを入れて「OK」。
- Excel の「ファイル > オプション > リボンのユーザー設定」で「メインタブ」に「新しいグループ」を作成。「コマンドの選択」を「リボンにないコマンド」にして、「ボタン (フォーム コントロール)」を作ったグループに追加。
- リボンからボタンを追加して、マクロに「CommandButton1_Click」を登録。
- テーブル名は [シート名$] でアクセス。
- 改行文字(Alt + Enter)が入っている項目名は、改行文字の代わりにアンダーバーを入れてアクセス。