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から自動化可能
- チーム管理では「セキュリティポリシーの策定」が必須!
以上です!