ExcelVBA

Excel VBAでOracle接続するプログラムを作成してみた

今回は、Excel VBAでOracleに接続し、指定したSELECT文のデータを取得するプログラムを作成してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の設定が完了していること。

Excel VBAでOracle接続するプログラムを作成する準備をしてみたExcel VBAでOracleに接続するプログラムを作成することができるが、そのために、いろいろ準備が必要である。今回は、その準備を行...

また、以下のように、接続先となるデータベースに、user_dataテーブルのデータが存在し、user_data2テーブルが存在しないこと
user_data

user_data2

サンプルプログラムの作成

ファイル「DbDump.xlsm」を開き、実行情報シートを以下のように編集する。
DbDumpマクロ_フォーマット

また、「取得」ボタンが押下された場合、以下のプログラムの「dbDump」サブプロシージャが呼び出されるようになっていて、チェック処理、DB接続処理、SQL実行、DB切断処理の順に処理を行っている。



なお、実際に作成したVBAファイルの内容は、以下のサイトを参照のこと。
https://github.com/purin-it/vba/tree/master/excel-vba-oracle

サンプルプログラムの実行結果

正常にuser_dataテーブルのデータが取得できる場合の実行結果は、以下の通り。

1-1) 以下のように各セルを指定し、「取得」ボタンを押下
サンプルプログラムの実行結果_1_1

1-2) 以下のように、完了メッセージが表示される
サンプルプログラムの実行結果_1_2

1-3) 「user_data」シートには、以下のように、取得したデータが設定されることが確認できる
サンプルプログラムの実行結果_1_3

また、必須項目(SID)が入力されなかった場合の実行結果は、以下の通り。

2-1) 以下のように、SIDの入力がない状態で、「取得」ボタンを押下
サンプルプログラムの実行結果_2_1

2-2) 以下のように、エラーメッセージが表示されることが確認できるので、「OK」ボタンを押下
サンプルプログラムの実行結果_2_2

2-3) 以下のように、エラーの原因となる項目にカーソルが設定されることが確認できる
サンプルプログラムの実行結果_2_3

さらに、DB接続時にエラーになる場合の実行結果は、以下の通り。

3-1) 以下のように、接続先のうち「パスワード」が違っている状態で、「取得」ボタンを押下
サンプルプログラムの実行結果_3_1

3-2) 以下のように、ログインできなかった旨のエラーメッセージが表示されることが確認できる
サンプルプログラムの実行結果_3_2

また、実行SQLエラーになる場合の実行結果は、以下の通り。

4-1) 以下のように、実行SQLで指定したテーブル名が存在しない状態で、「取得」ボタンを押下
サンプルプログラムの実行結果_4_1

4-2) 以下のように、表(テーブル)が存在しない旨のエラーメッセージが表示されることが確認できる
サンプルプログラムの実行結果_4_2

要点まとめ

  • Excel VBAでOracleに接続するには、ADOというMicrosoftが提唱しているデータアクセス技術を利用して、ADODB.Connectionのオープン(DB接続)→ADORecordsetのオープン(SQL実行)→ADORecordset、ADODB.Connectionのクローズの順に実行すればよい。