DB操作を行うExcelマクロについて説明します。
今回の記事は『第4回』となります。
第1回:Configシートの設定値をVBA上で取り扱う
第2回:SELECT文により取得したデータをExcelに格納
第3回:Excel から INSERT, UPDATE, DELETE を実行
第4回:Excel から MERGE を実行
【Excelダウンロードはこちら】
※2021/2/5改修版
・ODBC接続からOraOLEDB.Oracle接続に変更
・INSER,UPDATE,MERGE文の生成方法を修正
概要
第4回目は、第3回で実装したExcelシートに格納したデータ(セルの値)を、指定したDB(データベース)のテーブルに挿入・更新・削除する方法に加えて、データ挿入 or 更新(MERGE)を追加で実装しました。
MERGE実行機能を追加したので、今回のExcelファイルからOracleデータベースを操作する機能は下記となります。
タイプ | 機能 |
---|
INSERT | DBのテーブルにデータを挿入 (レコード挿入) |
UPDATE | DBのテーブルに格納されているデータを更新 (レコード更新) |
DELETE | DBのテーブルに格納されているデータを削除(レコード削除) |
MERGE | DBのテーブルに格納されているデータを挿入もしくは更新 |
パッケージ構成
Excelマクロ内の構成は下記となります 。(使用するモジュールのみ記載)
ソースコード解説
前回まで、INSERT・UPDATE・DELETE・MERGEの各シートから実行されるマクロはそれぞれ別関数として独立させていました。
それでは、今後機能を拡張する際に不便かと思いましたので、INSERT・UPDATE・DELETE・MERGEの各シートから実行したマクロは、一つの関数を経由してからデータベース操作クラスにアクセスするように改修しました。(イメージは下記画像)
例えば、MERGE文の実行では executeMergeSqlsOracle() を実行し、その中で executeDmlSqlsOracle 関数を呼び出しています。
(下記に一部のコードを記載していますが、詳細はExcelファイルのVBAを確認してみてください。)
今回は以上となります。これでExcelファイルのマクロからOracleデータベースを操作する方法の説明は終了となります。
これまで説明してきたような、データベースを操作する部分”のみ”を予め製作しておけば、他の用途に応じて追加改造することで様々な場面に対応できます。
基本機能を準備しておくことの大切さを共感して頂ければ幸いです。