用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會員
7內容數
如果可以無所事事的放空,那才是真的幸福?
留言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=
本篇參與的主題活動
BHC炸雞台灣首家分店於11/11台北大巨蛋地下街B2「遠東Garden City花園綠廊」正式登場,從國父紀念館捷運站五號出口步行約2分鐘。店面特別規畫內用和外帶動線,讓球迷們可以更快速外帶點餐,也有計畫明年擴展至南部。
BHC炸雞台灣首家分店於11/11台北大巨蛋地下街B2「遠東Garden City花園綠廊」正式登場,從國父紀念館捷運站五號出口步行約2分鐘。店面特別規畫內用和外帶動線,讓球迷們可以更快速外帶點餐,也有計畫明年擴展至南部。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
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 的快捷鍵自動出現自動格式設定技巧,可以讓我們在更短的時間內套用自動格式,讓工作更輕鬆。