【ExcelVBA】XserverVPS上のMySQLをExcelから直接操作する
Excel VBAを用いてXserver VPS上に構築されたMySQLデータベースへ直接アクセスし、データを取得・操作する方法です。Python等の外部言語を介さず、Excel標準の機能であるADO(ActiveX Data Objects)とMySQL提供のODBCドライバを組み合わせることで、既存の帳票出力を劇的に高速化できる。ドライバのインストールから、具体的な接続コードの実装までを書き留めておきます。
Connector/ODBC のダウンロード・インストール
まずはWindowsとMySQLを橋渡しする「Connector/ODBC」を入手します。
- MySQL公式サイトへアクセスします。
- インストールされている Excelのビット数(32bit/64bit) に合わせたインストーラー(MSI Installer)を選択しましょう。
※Windowsが64bitでも、Excelが32bitなら32bit版ドライバが必要です。 - ダウンロードボタン押下後、サインアップを促されますが、下部の “No thanks, just start my download.” をクリックすることで登録なしでダウンロード可能です。
- 入手した .msi ファイルを実行し、標準設定のままインストールを完了させます。
インストール済みドライバのバージョン確認
VBAに記述する「正確なドライバ名」を特定します。
- Windowsの検索バーに 「ODBC」 と入力し、「ODBC データソース (64ビット)」(または32ビット)を起動します。
- 「ドライバー」 タブをクリックし、一覧にある名前を確認します。
- MySQL ODBC 9.6 Unicode Driver など、表示されている文字列をメモします。
※この文字列が1文字でも違うと、VBA実行時に「ドライバが見つかりません」というエラーになります。
VBAソースコードの実装
標準モジュールに以下のコードを記述します。
Sub ConnectToMySQL()
' ADOオブジェクトの宣言(実行時バインディング)
Dim conn As Object
Dim rs As Object
Dim connectionString As String
' インスタンスの生成
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
' --- 接続文字列の設定 ---
' DRIVER: ODBCデータソースで確認した正確な名称を指定
' SERVER: サーバーのドメイン名またはIPアドレス
connectionString = "DRIVER={MySQL ODBC 9.2 Unicode Driver};" & _
"SERVER=satoshi71.com;" & _
"DATABASE=database_name;" & _
"USER=admin;" & _
"PASSWORD=your_password;" & _
"PORT=3306;" & _
"OPTION=3;"
On Error GoTo ErrorHandler
' データベース接続開始
conn.Open connectionString
' SQLクエリの実行(usersテーブルから全件取得)
rs.Open "SELECT * FROM users", conn
' セルA1を起点に、取得したレコードセットを一括展開
If Not rs.EOF Then
Sheet1.Range("A1").CopyFromRecordset rs
End If
MsgBox "データの読み込みに成功しました。", vbInformation
CleanUp:
' 後処理:接続を閉じてメモリを解放
If Not rs Is Nothing Then If rs.State = 1 Then rs.Close
If Not conn Is Nothing Then If conn.State = 1 Then conn.Close
Set rs = Nothing
Set conn = Nothing
Exit Sub
ErrorHandler:
' エラー発生時の通知(接続文字列のミスやネットワークエラーなど)
MsgBox "接続失敗: " & Err.Description, vbCritical
Resume CleanUp
End Sub
スポンサーリンク

