用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=
本篇參與的主題活動
這篇超完整的7天6夜北越自由行攻略,涵蓋河內、下龍灣、陸龍灣精華景點、美食與特色活動,提供行前準備、Google地圖懶人包、詳細行程規劃、總花費及購票連結,讓你輕鬆規劃深度北越之旅!
其實女生大概都喜歡風格時尚之類的,只是從一個專注練琴關在琴房的書呆子到磨練出自己適合的風格和造型,漸漸的發現每一件事情要從無到有慢慢地在每一次演每一次活動的紀錄之中,慢慢地修改找尋適合自己的風格,也是個人內在的形塑、氣質、每一個單品透露出用品本人的性格,都在無形的地方,慢慢的成為人生的一部分
外遇是一場感情的試煉,撕裂了信任,也暴露了關係中的隱形裂縫。它讓人深陷傷痛與困惑,但同時也提供了一次重新審視自我與關係的機會。在這篇文章中,我們將深度解析外遇的成因、對愛情的影響,以及如何在裂痕中找到修復或重生的可能性,幫助你面對這場情感的挑戰,找到屬於自己的答案。
手肘髁發炎(Epicondylitis),俗稱網球肘 (Tennis Elbow) 評估、身體檢查、處理邏輯保母級指南,看完別還跟我說你不會。
又到了準備過年的熱門出國時段,必不可少的一定需要網路呀~ 來分享一下我曾經使用過的各家網卡及心得還有注意事項
這篇超完整的7天6夜北越自由行攻略,涵蓋河內、下龍灣、陸龍灣精華景點、美食與特色活動,提供行前準備、Google地圖懶人包、詳細行程規劃、總花費及購票連結,讓你輕鬆規劃深度北越之旅!
其實女生大概都喜歡風格時尚之類的,只是從一個專注練琴關在琴房的書呆子到磨練出自己適合的風格和造型,漸漸的發現每一件事情要從無到有慢慢地在每一次演每一次活動的紀錄之中,慢慢地修改找尋適合自己的風格,也是個人內在的形塑、氣質、每一個單品透露出用品本人的性格,都在無形的地方,慢慢的成為人生的一部分
外遇是一場感情的試煉,撕裂了信任,也暴露了關係中的隱形裂縫。它讓人深陷傷痛與困惑,但同時也提供了一次重新審視自我與關係的機會。在這篇文章中,我們將深度解析外遇的成因、對愛情的影響,以及如何在裂痕中找到修復或重生的可能性,幫助你面對這場情感的挑戰,找到屬於自己的答案。
手肘髁發炎(Epicondylitis),俗稱網球肘 (Tennis Elbow) 評估、身體檢查、處理邏輯保母級指南,看完別還跟我說你不會。
又到了準備過年的熱門出國時段,必不可少的一定需要網路呀~ 來分享一下我曾經使用過的各家網卡及心得還有注意事項
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
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
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
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 的快捷鍵自動出現自動格式設定技巧,可以讓我們在更短的時間內套用自動格式,讓工作更輕鬆。