MySQL(MariaDB)是一套非常流行的資料庫系統,因為它開源、免費,幾乎是每一個個人架站者的首選資料庫。
Microsoft Excel 更不用說,它是辦公室必備神器,老闆愛用來看報表,所以工程師們一定要會使用它。
今天我們要把 Excel資料寫入MySQL,除了用MySQL的一些管理軟體外,身為程式設計師的我們,當然要用 "VBA 來自動寫回 MySQL" 囉~~
接下來就是環境設定的基本步驟:
在google直接搜尋 "MySQL ODBC"
我就可以找到 MySQL :: Developer Zone 點開它,
這邊 ORACLE 預設讓我們下載 for Windows X64 最新的 Connector 版本,但是千萬不要裝這個版本。。。。,請點上方的 "Archives"
進到這一頁後,Product version: 就可以選取較古老的版本,請選取8.0以前的版本,因為我們要用的是 Windows (x86,32-bit)的版本,也不要是ansi版本
安裝過程很簡單,就按同意後,一直Next,到最後按 Finish,就結束了。
安裝完 MySQL ODBC Connector後,我們就先來測試一下:
接下來讓我們測試一下連線,讓我們再回到「使用者資料來源名稱」的頁面,
按下「新增(D)...」
填入我們的MySQL伺服器資料。。。
按下「Test」後,如果出現「Connection successful」就表示我們完成安裝的步驟了。
連線成功,在Database:選單中就可以看到我們在MySQL伺服器上的"資料庫"們
測試完成後,可以直接按「Cancel」,再按「取消」關閉視窗就可以了。
Set myConn = CreateObject("ADODB.Connection")
myConn.Open "Driver={MySQL ODBC 5.2 Unicode Driver};Server=127.0.0.1;Database=equip_management;User=sa;Password='XXXXX';Option=3;"
先建立一個 "ADODB.Connection" 的物件
再用 Open 進行連線,
Driver={MySQL ODBC 5.2 Unicode Driver}; 務必填入你安裝的 MySQL ODBC Connector 版本,這裡可以到 "Windows系統管理工具 → ODBC 資料來源(32位元)→ 驅動程式" 查詢Driver名稱,
Server=127.0.0.1; 請填入MySQL伺服器的IP,相關MySQL設定以後再介紹,
Database=equip_management; 請填入我們要連線的資料庫名稱,
User=sa; 請填入我們的資料庫使用者名稱,
Password='XXXXX'; 請填入我們的資料庫使用者密碼,
Option=3; 這邊的Option=3 表示使用 Unicode 支援。
簡易的MySQL讀取
// 使用 SQL查詢語法
SQL = "SELECT * FROM maintain_records WHERE 1 = 1"
SET myResult = myConn.Execute(SQL) // 執行查詢
Sheets("MySQL_DB").Select // 選擇 "MySQL_DB" Sheets
Cells.Select // 選擇全部
Selection.ClearContents // 清空資料
Range("A1").Select // 選取 A1 的位置
Range("A1").CopyFromRecordset myResult // 將查詢到的資料貼在A1的位置上
上圖似乎少了欄位名稱,於是我們再改一下:
// 使用 SQL查詢語法
SQL = "SELECT * FROM maintain_records WHERE 1 = 1"
SET myResult = myConn.Execute(SQL) // 執行查詢
Sheets("MySQL_DB").Select // 選擇 "MySQL_DB" Sheets
Cells.Select // 選擇全部
Selection.ClearContents // 清空資料
// Range("A1").Select // 選取 A1 的位置
// 輸出欄位名稱
For i = 1 To myResult.Fields.Count
Cells(1, i).Value = myResult.Fields(i - 1).Name
Next i
Range("A2").CopyFromRecordset myResult // 將查詢到的資料貼在A1的位置上
myResult.Close // 釋放 myResult 資料
myConn.Close // 釋放 myConn 連線
有了欄位名稱看起來漂亮一點。。。。。
同樣的 VBA 執行 MySQL 的 "寫入、修改、刪除" 全都是用
SET myResult= myConn.Execute(SQL)
重點就是 SQL 指令的拼湊,這裡就不多做贅述,自己多做嚐試吧。
最後來解釋一下為什麼使用32位元的 ODBC Driver,
原因在於我們安裝的 Office 版本,
雖然說 Office 在 2010 以後開始有支援64位元版本,但為了相容性問題,一般微軟都會預設安裝 32位元版本,如果你安裝了 64位元版本的Office,也就要安裝 x64版的ODBC connector。
所以安裝MySQL ODBC connector 前,請確認好你的Office是32位元還是64位元。