ExcelVBA

Excel VBAでOracle接続し取得したテーブルデータを1シートにまとめて出力してみた

これまで、Excel VBAでOracleに接続し、指定したSELECT文のデータを繰り返し取得するプログラムを作成していたが、今回はSELECT文の実行結果を1シートにまとめて出力してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事のサンプルプログラムの作成が完了していること。

Excel VBAで複数テーブルのデータを繰り返し取得するプログラムを作成してみた(ソースコード編)今回も引き続き、複数のテーブルデータを繰り返し取得する処理のサンプルプログラムについて述べる。ここでは、具体的なサンプルプログラムのソー...

また、user_dataテーブル、m_sexテーブルに、以下のデータが作成されていること。
前提条件_1

前提条件_2



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

今回作成したサンプルプログラムの内容は、以下の通り。

1) サンプルプログラム「DbDump(Oracle).xlsm」のレイアウトは、以下の通り。
サンプルプログラムのレイアウト

2)「取得」ボタンが押下された場合に呼び出されるプログラム「dbDump」サブプロシージャの内容は以下の通りで、SELECT文の実行結果を「DBダンプ(Oracle)」シートにまとめて出力すると共に、changeNullファンクションでNULL値を「(NULL)」と変更している。

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

「EaseUS Todo Backup」は様々な形でバックアップ取得が行える便利ツールだったパソコン内のデータを、ファイル/パーティション/ディスク等の様々な単位でバックアップしたり、バックアップのスケジュール設定や暗号化設定も...

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

今回作成したサンプルプログラムの実行結果は、以下の通り。

1) サンプルプログラム「DbDump(Oracle).xlsm」を開き、下記のように値を入力し「取得」ボタンを押下する。
サンプルプログラムの実行結果_1_1

なお、SIDに入力した「XE」は、以下のように、tnsnames.oraやSQL Developerの接続先から確認できる。
サンプルプログラムの実行結果_1_2

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

2) 以下のように確認ダイアログが表示されるので、「はい」ボタンを押下する。なお、「いいえ」ボタンを押下した場合は、何もせず処理を終了する。
サンプルプログラムの実行結果_2

3) 取得が完了すると完了メッセージが表示されるため、「OK」ボタンを押下する。
サンプルプログラムの実行結果_3

4) 「DBダンプ(Oracle)」シートを確認すると、以下のように、Select文の実行結果が出力されることが確認できる。なお、NULL値は「(NULL)」と表示されることが確認できる。
サンプルプログラムの実行結果_4

5) 「DBダンプ(Oracle)」シートが存在する状態で「取得」ボタンを押下すると、以下のように、削除確認ダイアログが表示される。削除確認ダイアログで「はい」ボタンを押下すると、「DBダンプ(Oracle)」シートを削除した後で、DBダンプの取得が行われる。
サンプルプログラムの実行結果_5_1

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

要点まとめ

  • Excel VBAでOracle接続し取得したテーブルデータは、NULL値を別の文字列に変更した上で、1シートにまとめて出力することができる。