用Excel VBA 存取 MySQL

更新 發佈閱讀 7 分鐘

MySQL(MariaDB)是一套非常流行的資料庫系統,因為它開源、免費,幾乎是每一個個人架站者的首選資料庫。

Microsoft Excel 更不用說,它是辦公室必備神器,老闆愛用來看報表,所以工程師們一定要會使用它。

今天我們要把 Excel資料寫入MySQL,除了用MySQL的一些管理軟體外,身為程式設計師的我們,當然要用 "VBA 來自動寫回 MySQL" 囉~~

接下來就是環境設定的基本步驟:

1.安裝 MySQL ODBC 驅動程式:

在google直接搜尋 "MySQL ODBC"

用 Google 搜尋 MySQL ODBC

用 Google 搜尋 MySQL ODBC

我就可以找到 MySQL :: Developer Zone 點開它,

MySQL ODBC connector 下載

MySQL ODBC connector 下載

這邊 ORACLE 預設讓我們下載 for Windows X64 最新的 Connector 版本,但是千萬不要裝這個版本。。。。,請點上方的 "Archives"

MySQL ODBC connector archives

MySQL ODBC connector archives

進到這一頁後,Product version: 就可以選取較古老的版本,請選取8.0以前的版本,因為我們要用的是 Windows (x86,32-bit)的版本,也不要是ansi版本

我這邊就選 5.2.6 win32的版本,檔案大小約 3.7MB

我這邊就選 5.2.6 win32的版本,檔案大小約 3.7MB

下載下來的 msi 安裝檔

下載下來的 msi 安裝檔

raw-image

安裝過程很簡單,就按同意後,一直Next,到最後按 Finish,就結束了。

2.測試 MySQL ODBC 連線:

安裝完 MySQL ODBC Connector後,我們就先來測試一下:

在開始選單中找到 "ODBC Data Sources(32-bit)"

在開始選單中找到 "ODBC Data Sources(32-bit)"

ODBC 資源來源管理員(32位元)

ODBC 資源來源管理員(32位元)

點選「驅動程式」,向下拉到最底,就可以看到剛剛安裝的「MySQL ODBC 5.2 Unicode Driver」

點選「驅動程式」,向下拉到最底,就可以看到剛剛安裝的「MySQL ODBC 5.2 Unicode Driver」

接下來讓我們測試一下連線,讓我們再回到「使用者資料來源名稱」的頁面,

按下「新增(D)...」

按下「新增(D)...」後,同樣找到最後的「MySQL ODBC 5.2 Unicode Driver」

按下「新增(D)...」後,同樣找到最後的「MySQL ODBC 5.2 Unicode Driver」

填入我們的MySQL伺服器資料。。。

僅需要輸入Name:、 TCP/IP Server: 、 User: 和 Password: 就可以按下「Test」

僅需要輸入Name:、 TCP/IP Server: 、 User: 和 Password: 就可以按下「Test」

按下「Test」後,如果出現「Connection successful」就表示我們完成安裝的步驟了。

MySQL 連線成功

MySQL 連線成功

連線成功,在Database:選單中就可以看到我們在MySQL伺服器上的"資料庫"們

有「Database」,確認 MySQL ODBC 連線成功

有「Database」,確認 MySQL ODBC 連線成功

測試完成後,可以直接按「Cancel」,再按「取消」關閉視窗就可以了。

3.Excel VBA 設定

Excel 設定的「信任中心」,務必將巨集啟用。

Excel 設定的「信任中心」,務必將巨集啟用。

4.VBA 連線 MySQL 宣告:

 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 支援。



5.VBA 執行 MySQL 查詢資料:

簡易的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的位置上
讀取 MySQL 資料

讀取 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 的位置
// 輸出欄位名稱
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 連線
raw-image

有了欄位名稱看起來漂亮一點。。。。。

同樣的 VBA 執行 MySQL 的 "寫入、修改、刪除" 全都是用

SET myResult= myConn.Execute(SQL) 

重點就是 SQL 指令的拼湊,這裡就不多做贅述,自己多做嚐試吧。


6.為什麼用32位元的ODBC Driver

最後來解釋一下為什麼使用32位元的 ODBC Driver,

原因在於我們安裝的 Office 版本,

我電腦裝的是 Office 2016 32位元版

我電腦裝的是 Office 2016 32位元版

雖然說 Office 在 2010 以後開始有支援64位元版本,但為了相容性問題,一般微軟都會預設安裝 32位元版本,如果你安裝了 64位元版本的Office,也就要安裝 x64版的ODBC connector。

所以安裝MySQL ODBC connector 前,請確認好你的Office是32位元還是64位元。

留言
avatar-img
天空
3會員
25內容數
如果可以無所事事的放空,那才是真的幸福?
天空的其他內容
2025/03/06
使用 ldap3 2.9.1 pip install ldap3​ python: from ldap3 import Server, Connection, SIMPLE, SYNC, ALL import pandas as p d import json # LDAP 伺服器地址
2025/03/06
使用 ldap3 2.9.1 pip install ldap3​ python: from ldap3 import Server, Connection, SIMPLE, SYNC, ALL import pandas as p d import json # LDAP 伺服器地址
2025/03/06
最近看了一本書「29歲開始做,43歲提早退休…」 書中的大意是, 作者由29歲起,每月將收入的50%都存起來投資基金和買保險(養老險), 到了43歲時因職場上的不順遂,毅然決定提前退休。 書中並沒有詳細指出作者是如何「投資基金和買保險」來建立被動收入, 本書的內容比較多的是描述作者的退休生
Thumbnail
2025/03/06
最近看了一本書「29歲開始做,43歲提早退休…」 書中的大意是, 作者由29歲起,每月將收入的50%都存起來投資基金和買保險(養老險), 到了43歲時因職場上的不順遂,毅然決定提前退休。 書中並沒有詳細指出作者是如何「投資基金和買保險」來建立被動收入, 本書的內容比較多的是描述作者的退休生
Thumbnail
2024/12/19
什麼是 Active Directory? Active Directory (AD)是企業經常用來做電腦登入認證的系統服務,透過 AD 伺服器 IT管理員能夠用來儲存 使用者(User)、使用者群組(Group)和電腦(Computer) …等的相關資訊以進行認證與網域存取管理。 如何
Thumbnail
2024/12/19
什麼是 Active Directory? Active Directory (AD)是企業經常用來做電腦登入認證的系統服務,透過 AD 伺服器 IT管理員能夠用來儲存 使用者(User)、使用者群組(Group)和電腦(Computer) …等的相關資訊以進行認證與網域存取管理。 如何
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
※ 安裝 MySQL server 官網下載(Windows 版本) MySQL Installer  的官方下載頁:https://dev.mysql.com/downloads/installer/ MySQL Installer 是一個方便的工具,可以幫助你一次性安裝多個 MySQL 產
Thumbnail
※ 安裝 MySQL server 官網下載(Windows 版本) MySQL Installer  的官方下載頁:https://dev.mysql.com/downloads/installer/ MySQL Installer 是一個方便的工具,可以幫助你一次性安裝多個 MySQL 產
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
Thumbnail
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
Thumbnail
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
Thumbnail
在Visual Studio裡有內建的SQL幫助我們存資料,SQL指的是資料庫,那麼我們就用註冊會員這個例子來看一下怎麼使用內建的SQL吧~ 最後面有寫非常基本的SQL相關語法可以做參考 Step 1:建立資料庫
Thumbnail
在Visual Studio裡有內建的SQL幫助我們存資料,SQL指的是資料庫,那麼我們就用註冊會員這個例子來看一下怎麼使用內建的SQL吧~ 最後面有寫非常基本的SQL相關語法可以做參考 Step 1:建立資料庫
Thumbnail
在實務開發中,我們常常需要從 Excel 讀取資料,例如: 👉 報表匯入 👉 資料轉換 👉 批次處理 這篇會帶你用 Microsoft.Office.Interop.Excel 來實作一個最基本的 Excel 讀取範例,並說明幾個非常重要的細節(尤其是資源釋放!)
Thumbnail
在實務開發中,我們常常需要從 Excel 讀取資料,例如: 👉 報表匯入 👉 資料轉換 👉 批次處理 這篇會帶你用 Microsoft.Office.Interop.Excel 來實作一個最基本的 Excel 讀取範例,並說明幾個非常重要的細節(尤其是資源釋放!)
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News