2013-01-21

Microsoft Excel で SQL を利用する方法

Microsoft Excel で SQL

なぜか、今年から家計簿を複式でつけている。それについてのツッコミはまた置いといて…、問題はデータの集計方法。仕訳帳シートにどんどんデータを入力していったとして、総勘定元帳的なシートはどうしようかな?と考えていたところ。たとえば現金だけのシートを作るのに、仕訳帳から「ソート」機能でデータをピックアップしてコピー&ペーストしていたのだけれど、このソート機能がめっぽう使いにくいので。

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 2010 のリボンには、ボタンを設置するための項目がない)
  • Excel の「ファイル > オプション > リボンのユーザー設定」で「メインタブ」に「新しいグループ」を作成。「コマンドの選択」を「リボンにないコマンド」にして、「ボタン (フォーム コントロール)」を作ったグループに追加。
  • リボンからボタンを追加して、マクロに「CommandButton1_Click」を登録。
で、使える SQL 文。
  • テーブル名は [シート名$] でアクセス。
  • 改行文字(Alt + Enter)が入っている項目名は、改行文字の代わりにアンダーバーを入れてアクセス。
後は多分、普通の SQL 文が通るはず。これまで食わず嫌いだったけれど、VBA をもっと使ってみると面白いかもと感じた今日この頃。

1 comment:

  1. The important mechanisms of injection molding are warmth transfer and pressure flow. The important equipment is an injection molding machine, sometimes generally known as|often identified as} a press, and a mildew which can even be referred to as a tool or sometimes a die. The product of the process Cotton Duvet Covers is a molding, which confusingly and inaccurately is sometimes called a mildew.

    ReplyDelete