Excel VBA × MySQLデータベース管理入門
Excel VBA から MySQL を操作して、データベース管理を効率化する方法を徹底解説します!
目次
目次
- Excel と MySQL の接続方法
- Excel からユーザー登録・権限付与
- Excel からデータベースの作成
- Excel からテーブルの作成
- Excel からデータの追加
- Excel から検索結果の取得
Excel と MySQL の接続方法
必要なソフトウェア
- MySQL Community Edition
- MySQL Connector/ODBC
設定手順
- ODBCドライバーをインストール
- DSN(データソース名)を作成(システムDSN推奨)
VBAでの接続例
Dim ado As Object Set ado = CreateObject("ADODB.Connection") ado.Open "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;User=root;Password=root;Option=3;" ado.Close Set ado = Nothing
Excel からユーザー登録・権限付与
SQL基本構文
CREATE USER 'db_user'@'%' IDENTIFIED BY 'db_user'; GRANT ALL ON eng001.* TO 'db_user'@'%'; FLUSH PRIVILEGES;
VBAでユーザー作成
Sub CreateUserAndGrantPrivileges() Dim adoConn As Object Dim strSql As String Dim strDsn As String strDsn = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=mysql;User=root;Password=root;Option=3;" Set adoConn = CreateObject("ADODB.Connection") adoConn.Open strDsn strSql = "CREATE USER IF NOT EXISTS 'db_master'@'localhost' IDENTIFIED BY 'db_master';" adoConn.Execute strSql strSql = "GRANT ALL PRIVILEGES ON eng001.* TO 'db_master'@'localhost';" adoConn.Execute strSql adoConn.Execute "FLUSH PRIVILEGES;" adoConn.Close Set adoConn = Nothing End Sub
Excel からデータベースの作成
SQL基本構文
CREATE DATABASE eng001 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
VBAでデータベース作成
Sub CreateDatabase_eng001() Dim adoCon As Object Dim strSql As String Dim strDsn As String strDsn = mysqlDsn() Set adoCon = CreateObject("ADODB.Connection") adoCon.Open strDsn strSql = "CREATE DATABASE IF NOT EXISTS eng001 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" adoCon.Execute strSql adoCon.Close Set adoCon = Nothing End Sub
Excel からテーブルの作成
SQL基本構文
CREATE TABLE user_master ( id CHAR(16) NOT NULL PRIMARY KEY, name TEXT, pass TEXT, mail TEXT, rights INT );
VBAでテーブル作成
Sub ado_CreateTable() Dim ado As Object Dim strSql As String Dim strDsn As String strDsn = mysqlDsn() Set ado = CreateObject("ADODB.Connection") ado.Open strDsn strSql = "CREATE TABLE user_master (id CHAR(16) not null primary key, name TEXT, pass TEXT, mail TEXT, rights INT);" ado.Execute strSql ado.Close Set ado = Nothing End Sub
Excel からデータの追加
SQL基本構文
INSERT INTO user_master (id, name, pass, mail, rights) VALUES ('user000','三田さやか','pas000','user00@gmail.com',0);
VBAでレコード追加
Sub ado_Insert() Dim ado As Object Dim strSql As String Dim strDsn As String strDsn = mysqlDsn() Set ado = CreateObject("ADODB.Connection") ado.Open strDsn strSql = "INSERT INTO user_master (id, name, pass, mail, rights) VALUES ('user000','三田さやか','pas000','user00@gmail.com',0);" ado.Execute strSql ado.Close Set ado = Nothing End Sub
Excel から検索結果の取得
SQL基本構文
SELECT * FROM user_master;
VBAで検索実行
Sub SelectUserMaster() Dim ado As Object Dim res As Object Dim strSql As String Dim strDsn As String strDsn = mysqlDsn() strSql = "SELECT * FROM user_master;" Set ado = CreateObject("ADODB.Connection") ado.Open strDsn Set res = ado.Execute(strSql) Do Until res.EOF Debug.Print res.Fields(0).Value, res.Fields(1).Value res.MoveNext Loop res.Close Set res = Nothing ado.Close Set ado = Nothing End Sub
まとめ
- Excel VBA で MySQL を管理することで、データベース操作を一元化できる
- ユーザー管理、データベース作成、テーブル作成、データ追加、検索まで、すべてExcelから自動化可能
- チーム管理では「セキュリティポリシーの策定」が必須!
以上です!