用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
1會員
18內容數
如果可以無所事事的放空,那才是真的幸福?
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
天空 的其他內容
表格可調整欄位,這是很常用到的功能,先看結果如下: 我用了一個DIV包在TABLE之外,所以這個DIV的CSS也會影響TABLE寬度, 以下是程式碼: <!DOCTYPE html> <html lang="zh-TW"> <head> <meta charset="UTF-8">
最近開發程式都用這一套:VSCode 對老程式員來說,用Notepad++就能開發程式,何必再多安裝一套程式開發工具。 但是我還是跟風,選了這套VS Code,主要還是因為 Code比Notepad++強大多了。 VSCode 與 Notepad++比較: 在編輯HTML、PHP時程式中穿插
最近公司發放了2025年行事曆(以下為示意圖非實際行事曆): 看起來很正常的行事曆,但問題就出現在了週別計算。 歸納後某公司的規則如下: a. 1月1日那一週如果屬於今年的日數大於等於4日,則為第一週W1。 b. 1月1日那一週如果屬於今年的日數小於4日,則為去年最後一週W52或W5
最近公司發送了2025年行事曆,無聊的我突然想起來,之前廠商送的好多萬用手冊都沒有用,不知道那一年的日期排列和明年相同,於是就有了以下的畫面: 程式碼如下: <!DOCTYPE html> <html lang="zh-Hant"> <head> <meta charset="UTF-8"
最近有一個需求是多個寬度相同的Div捲軸要連動的功能,如下圖: 這程式單純使用jquery就可以完成: <!DOCTYPE html> <html lang="zh-TW"> <head> <meta charset="UTF-8"> <meta name="viewport" con
使用 GD庫: 1.先確認 PHP GD lib 是否已安裝,利用 phpinfo() 頁面來檢查。 <?php phpinfo(); ?> 如果出現 GD Support "enabled",就是有啟用 GD lib了, 如果沒有的話,請打開 php.ini 找到 ;extension=
表格可調整欄位,這是很常用到的功能,先看結果如下: 我用了一個DIV包在TABLE之外,所以這個DIV的CSS也會影響TABLE寬度, 以下是程式碼: <!DOCTYPE html> <html lang="zh-TW"> <head> <meta charset="UTF-8">
最近開發程式都用這一套:VSCode 對老程式員來說,用Notepad++就能開發程式,何必再多安裝一套程式開發工具。 但是我還是跟風,選了這套VS Code,主要還是因為 Code比Notepad++強大多了。 VSCode 與 Notepad++比較: 在編輯HTML、PHP時程式中穿插
最近公司發放了2025年行事曆(以下為示意圖非實際行事曆): 看起來很正常的行事曆,但問題就出現在了週別計算。 歸納後某公司的規則如下: a. 1月1日那一週如果屬於今年的日數大於等於4日,則為第一週W1。 b. 1月1日那一週如果屬於今年的日數小於4日,則為去年最後一週W52或W5
最近公司發送了2025年行事曆,無聊的我突然想起來,之前廠商送的好多萬用手冊都沒有用,不知道那一年的日期排列和明年相同,於是就有了以下的畫面: 程式碼如下: <!DOCTYPE html> <html lang="zh-Hant"> <head> <meta charset="UTF-8"
最近有一個需求是多個寬度相同的Div捲軸要連動的功能,如下圖: 這程式單純使用jquery就可以完成: <!DOCTYPE html> <html lang="zh-TW"> <head> <meta charset="UTF-8"> <meta name="viewport" con
使用 GD庫: 1.先確認 PHP GD lib 是否已安裝,利用 phpinfo() 頁面來檢查。 <?php phpinfo(); ?> 如果出現 GD Support "enabled",就是有啟用 GD lib了, 如果沒有的話,請打開 php.ini 找到 ;extension=
本篇參與的主題活動
比較2017年與2024年日本東北旅遊照片,對比藏王樹冰、銀山溫泉、山寺等景點在不同時間的景觀差異,即使地點相同,不同時間的體驗與感受截然不同,珍惜每個當下的珍貴回憶。2024年因暖冬導致雪景不如預期,反觀2017年的雪景壯觀美麗。新聞報導2025年日本東北暴雪,衷心祈願一切平安。
記錄一場前往屏東縣三地門鄉德文山(觀望山)的登山之旅,分享路線規劃、登山心得、沿途風景與美食體驗,並提醒登山客注意入山證申請及避免錯過三角點。
薪水的高低,從來不是努力的問題,而是思維的選擇。年薪百萬的人,不是單靠埋頭苦幹,而是透過「創造價值」決定自己的價格。他們懂得提升不可取代性、創造多重收入、主動尋找機會、投資自己,讓財富加速成長。與其等加薪,不如掌握「決定薪資的能力」。這篇文章,讓你看清真正的收入差距,從現在開始,為自己創造更高價值!
《Hunter x Hunter》基路亞擺脫哥哥控制 你也可以 別再諉過原生家庭  重奪你人生的話事權 現在網上有許多討論原生家庭影響的說法,雖然確實存在影響,但過度歸咎於家庭,可能會讓我們失去對人生的掌控權。 能在家人陪伴下成長是一件幸福的事。而且沒有父母是完美的,無論是學歷、貧富、性格
我不是不渴望愛,而是害怕愛會讓我失去自己。單身,對我來說,比戀愛更安全,因為這樣我能掌控自己的情緒與生活,而不必承擔愛帶來的責任與不安。如果你愛上一個像我這樣的人,請別急著改變我,讓我知道,愛不是束縛,而是自由與陪伴。
近期因為大S流感發病離世,朋友們紛紛詢問流感的用藥及營養預防,妞藥師先來聊藥物! 本文探討流感用藥,包含公費藥物易剋冒、克流感及自費藥物紓伏效之比較,並說明預防性投藥的條件及注意事項,下一篇再分享忙碌的現代人如何透過科技營養補充聰明增強抵抗力。
比較2017年與2024年日本東北旅遊照片,對比藏王樹冰、銀山溫泉、山寺等景點在不同時間的景觀差異,即使地點相同,不同時間的體驗與感受截然不同,珍惜每個當下的珍貴回憶。2024年因暖冬導致雪景不如預期,反觀2017年的雪景壯觀美麗。新聞報導2025年日本東北暴雪,衷心祈願一切平安。
記錄一場前往屏東縣三地門鄉德文山(觀望山)的登山之旅,分享路線規劃、登山心得、沿途風景與美食體驗,並提醒登山客注意入山證申請及避免錯過三角點。
薪水的高低,從來不是努力的問題,而是思維的選擇。年薪百萬的人,不是單靠埋頭苦幹,而是透過「創造價值」決定自己的價格。他們懂得提升不可取代性、創造多重收入、主動尋找機會、投資自己,讓財富加速成長。與其等加薪,不如掌握「決定薪資的能力」。這篇文章,讓你看清真正的收入差距,從現在開始,為自己創造更高價值!
《Hunter x Hunter》基路亞擺脫哥哥控制 你也可以 別再諉過原生家庭  重奪你人生的話事權 現在網上有許多討論原生家庭影響的說法,雖然確實存在影響,但過度歸咎於家庭,可能會讓我們失去對人生的掌控權。 能在家人陪伴下成長是一件幸福的事。而且沒有父母是完美的,無論是學歷、貧富、性格
我不是不渴望愛,而是害怕愛會讓我失去自己。單身,對我來說,比戀愛更安全,因為這樣我能掌控自己的情緒與生活,而不必承擔愛帶來的責任與不安。如果你愛上一個像我這樣的人,請別急著改變我,讓我知道,愛不是束縛,而是自由與陪伴。
近期因為大S流感發病離世,朋友們紛紛詢問流感的用藥及營養預防,妞藥師先來聊藥物! 本文探討流感用藥,包含公費藥物易剋冒、克流感及自費藥物紓伏效之比較,並說明預防性投藥的條件及注意事項,下一篇再分享忙碌的現代人如何透過科技營養補充聰明增強抵抗力。
你可能也想看
Google News 追蹤
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
商業簡報不僅僅是呈現數據,更需要深入瞭解數據分析及有效的工具運用。本文探討於Excel中使用不同函數來改善數據處理效率,包括IF、IFS、VLOOKUP、XLOOKUP及INDEX與MATCH的結合,幫助商業人士更好地從數據中提取洞見,助力業務增值,學習優化數據分析過程,讓您的商業簡報更具影響力。
Thumbnail
只要會用鍵盤的人,人人都會做EXCEL表格。但是,如果你仔細研究,你或許會發現,工作是否有效率其實可以從一張EXCEL表裡看出來。這篇文章分享幾幾簡單的檢查方法與製作技巧。
在工作中常常會需要用到Excel去整理數據資料,因為近期有在進行作業優化學習,提供網路上10個常用的Excel快捷鍵配置,以及相對應的功能,做為自我複習資料。
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗 🔗E
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 ♐人力資訊儀表板分集 本次人力資訊儀錶板預計分成5集依循漸進逐步完成 資料整
Thumbnail
Excel是職場上必備的工具之一,它可以用來處理各種數據,從簡單的計算到複雜的分析,都能夠勝任。在Excel中,有一個非常實用的技巧,叫做「微調按鈕」。微調按鈕可以讓你輕鬆地調整數據,而不需要手動輸入。它非常適合用於以下情況:需要頻繁調整數據的情況,例如:產品價格、銷售目標等。
Thumbnail
在職場上,我們經常需要使用 Excel 表格來處理資料,而自動格式設定可以幫助我們快速將資料整理成一致的格式,讓資料看起來更清晰、更有效率。用 Excel 的快捷鍵自動出現自動格式設定技巧,可以讓我們在更短的時間內套用自動格式,讓工作更輕鬆。
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
商業簡報不僅僅是呈現數據,更需要深入瞭解數據分析及有效的工具運用。本文探討於Excel中使用不同函數來改善數據處理效率,包括IF、IFS、VLOOKUP、XLOOKUP及INDEX與MATCH的結合,幫助商業人士更好地從數據中提取洞見,助力業務增值,學習優化數據分析過程,讓您的商業簡報更具影響力。
Thumbnail
只要會用鍵盤的人,人人都會做EXCEL表格。但是,如果你仔細研究,你或許會發現,工作是否有效率其實可以從一張EXCEL表裡看出來。這篇文章分享幾幾簡單的檢查方法與製作技巧。
在工作中常常會需要用到Excel去整理數據資料,因為近期有在進行作業優化學習,提供網路上10個常用的Excel快捷鍵配置,以及相對應的功能,做為自我複習資料。
Thumbnail
本法省去開啟EXCEL檔,轉存為CSV檔之手動作業,縮短作業時間,提高工作效率,尤其是對象為複數個檔案場合
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗 🔗E
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #3 | 上手等級:入門🔗
Thumbnail
🎗️本次主題成果展示:人力資訊分析 上集回顧 🔗EXCEL儀表板 | 人力資訊分析儀表板 #1 | 上手等級:入門🔗 🔗EXCEL儀表板 | 人力資訊分析儀表板 #2 | 上手等級:入門🔗 ♐人力資訊儀表板分集 本次人力資訊儀錶板預計分成5集依循漸進逐步完成 資料整
Thumbnail
Excel是職場上必備的工具之一,它可以用來處理各種數據,從簡單的計算到複雜的分析,都能夠勝任。在Excel中,有一個非常實用的技巧,叫做「微調按鈕」。微調按鈕可以讓你輕鬆地調整數據,而不需要手動輸入。它非常適合用於以下情況:需要頻繁調整數據的情況,例如:產品價格、銷售目標等。
Thumbnail
在職場上,我們經常需要使用 Excel 表格來處理資料,而自動格式設定可以幫助我們快速將資料整理成一致的格式,讓資料看起來更清晰、更有效率。用 Excel 的快捷鍵自動出現自動格式設定技巧,可以讓我們在更短的時間內套用自動格式,讓工作更輕鬆。