【初心者向け】Excel VBAでMySQLを操作!データベース管理の完全ガイド


Excel VBA × MySQLデータベース管理入門

Excel VBA から MySQL を操作して、データベース管理を効率化する方法を徹底解説します!


目次

目次

  • Excel と MySQL の接続方法
  • Excel からユーザー登録・権限付与
  • Excel からデータベースの作成
  • Excel からテーブルの作成
  • Excel からデータの追加
  • Excel から検索結果の取得

Excel と MySQL の接続方法

必要なソフトウェア

  • MySQL Community Edition
  • MySQL Connector/ODBC

設定手順

  1. ODBCドライバーをインストール
  2. 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から自動化可能
  • チーム管理では「セキュリティポリシーの策定」が必須!

以上です!


よかったらシェアしてね!
目次