Excel VBA Listview & 外部DBで入力補助ツール
他のブックをデータベースとして利用する、簡易の入力補助ツールです。マスターとして管理しているブック(顧客台帳、商品台帳など)をデータベースに見立て、そこから必要なデータを取り出します。
サンプル(アドイン)のダウンロードはこちら

使い方
0. 設定タブからデータソースを設定する。xlsxファイルを選択 > シートを選択 > 主キー(ID)の選択 >
検索対象の項目を選択 > データソース一覧に追加 > 既定のデータソースに設定
1. 右クリックメニューから Lookup DBを選択
2. テキストボックスに検索する文字列を入力
3. 候補リストから選択
4. 該当レコード(全項目)から任意の項目を選択
5. 貼り付けの方向などを選択、貼り付けボタンを押す
6. シートの選択した位置を基準にデータが貼り付けられる。
ポイント
1. 外部Excelブックをデータベースとして扱う
ADODBライブラリを使うと、MySQL, SQLServer、Accessなどのデータベースアプリケーションの他、Excelのブック、CSVファイルなどに接続してデータの問い合わせ、更新などを非常に簡単に行うことができます。データベースアプリケーションを使用する方が高速かつ安全です。今回は手軽なExcelブックを使用しました。
'Excel 2007より新しい場合(.xlsx) CN.Provider = "Microsoft.Ace.OLEDB.12.0" CN.Properties("Extended Properties") = "Excel 12.0 xml" 'Excel 2007より古い場合(.xls) 'CN.Provider = "Microsoft.Jet.OLEDB.4.0" 'CN.Properties("Extended Properties") = "Excel 8.0"
2.SQL文でのテーブルの指定方法
ちなみに、Excelブックをデータソースにした場合は、SQL文でテーブルを指定する際に、テーブル名の後ろに$を付け、テーブル名を括弧で挟む必要があります。 [テーブル名$]
3.複数のデータソースを登録して切り替えて使う
複数のデータソースを切り替えて使えるよう、一度登録したデータソースの設定をアドインそのものに保存できるようにしました。アドインには普通のブックと同様にシートが含まれています。このシートに書き込む形で設定を保存します。

最後に
いつもは、カスタマイズもしやすいよう、細かいところまで作りこまないようにしていますが、今回はある程度まともに使えるレベルにするだけでも結構作りこまないといけませんでした。ということで、解説は全編割愛します。。。 ソースコードを読んで意味不明なところや突っ込みどころがあればお知らせ下さい。