ExcelVBA

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

前回は、Excel VBAでOracleに接続し、指定したSELECT文の実行結果を1シートにまとめて出力してみたが、今回はMySQL, PostgreSQL, SQL Serverそれぞれに接続し同じように結果を出力してみたので、そのサンプルプログラムを共有する。

前提条件

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

Excel VBAでOracle接続し取得したテーブルデータを1シートにまとめて出力してみたこれまで、Excel VBAでOracleに接続し、指定したSELECT文のデータを繰り返し取得するプログラムを作成していたが、今回はS...

また、下記記事に記載されている、MySQLとPostgreSQLでのユーザー作成が完了していること。

MySQLでユーザーを作成しテーブルを追加してみたMySQLの場合は、Workbenchを利用すると、スキーマ(データベース)やユーザーの作成をGUIベースで実施できる。今回は、Work...
Postgresqlでユーザーを作成しテーブルを追加してみたPostgresqlの場合は、pgAdminを利用すると、ユーザーやデータベースの作成をGUIベースで実施できる。今回は、pgAdmin...

さらに、下記記事の「前提条件」の内容が完了していること。

Spring BootでSQL Serverに接続しMyBatisを利用してみた今回は、Spring Bootアプリケーションで接続するデータベースをSQL Serverに変更してみたので、そのサンプルプログラムを共...

やってみたこと

  1. Oracleの場合のサンプルプログラム
  2. MySQLの場合のサンプルプログラム
  3. PostgreSQLの場合のサンプルプログラム
  4. SQL Serverの場合のサンプルプログラム

Oracleの場合のサンプルプログラム

Oracleの場合のサンプルプログラムは、以下の前提条件の記事を参照のこと。

Excel VBAでOracle接続し取得したテーブルデータを1シートにまとめて出力してみたこれまで、Excel VBAでOracleに接続し、指定したSELECT文のデータを繰り返し取得するプログラムを作成していたが、今回はS...



MySQLの場合のサンプルプログラム

MySQLの場合のサンプルプログラムは、Oracleの場合のソースコードのうち、DB接続を行うconnectDB関数と、結果出力するシート名に関する部分を変更している。connectDB関数の内容は、以下の通り。

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

また、MySQLのuser01データベースの、user_dataテーブル、m_sexテーブルに、以下のデータを作成しておく。
MySQLのDB_1

MySQLのDB_2

さらに、MySQLの場合の実行結果は、以下の通り。

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

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

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

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



PostgreSQLの場合のサンプルプログラム

PostgreSQLの場合のサンプルプログラムも、Oracleの場合のソースコードのうち、DB接続を行うconnectDB関数と、結果出力するシート名に関する部分を変更している。connectDB関数の内容は、以下の通り。

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

また、PostgreSQLのODBCドライバをインストールする必要がある。その手順は、以下のサイトを参照のこと。
https://www.projectgroup.info/documents/PostgreSQL/POS_000008.html

さらに、PostgreSQLのUSER01データベースの、user_dataテーブル、m_sexテーブルに、以下のデータを作成しておく。
PostgreSQLのDB_1

PostgreSQLのDB_2

また、PostgreSQLの場合の実行結果は、以下の通り。

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

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

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

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



SQL Serverの場合のサンプルプログラム

SQL Serverの場合のサンプルプログラムも、Oracleの場合のソースコードのうち、DB接続を行うconnectDB関数と、結果出力するシート名に関する部分を変更している。connectDB関数の内容は、以下の通り。

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

また、SQL Serverのmasterデータベースの、user_dataテーブル、m_sexテーブルに、以下のデータを作成しておく。
SQLServerのDB_1

SQLServerのDB_2

さらに、SQL Serverの場合の実行結果は、以下の通り。

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

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

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

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

要点まとめ

  • Excel VBAでのDB接続先を、MySQL, PostgreSQL, SQL Serverそれぞれに変更することができる。その際、DB接続する処理を変更すれば、Oracleの場合と同じように動くようにできる。