Excel、VBA與MySQL交互

来源:http://www.cnblogs.com/wuzhiblog/archive/2017/05/20/VBA_Excel_Mysql.html
-Advertisement-
Play Games

如何用VBA操作MySQL資料庫?如何直接使用Excel操作MySQL資料庫? ...


本文主要涉及:

  1. VBA中的MySQL環境配置
  2. VBA連接MySQL資料庫
  3. VBA讀寫MySQL數據
  4. 在Excel中連接MySQL資料庫及數據讀寫

系統環境:

  • Windows 10
  • Excel 2013
  • XAMPP。其中集成的資料庫是MariaDB 10.1.13(如果不懂MariaDB為何物,可把它當成是MySQL。事實上它的使用和MySQL也幾乎完全一致)

1. VBA連接MySQL前的環境配置

系統中必須先安裝有MySQL服務,這個就不多說了。可以選擇使用官方安裝包,或者使用PHP集成環境中的資料庫都可以。

1.1 啟用腳本支持

在使用前,需要先在VBE中啟動資料庫連接支持。按下Alt+F11打開VBE,在菜單欄選擇“工具”-“引用”,在彈出的引用視窗中,找到"Microsoft ActiveX Data Objects 6.1 Library"和"Microsoft ActiveX Data Objects Recordset 6.0 Library",把前面的框勾選上,點擊確定即可。

1.2 安裝MySQL ODBC 連接服務

下載地址:Download Connector/ODBC

選擇操作系統及系統版本,下載對應的MSI文件安裝即可

1.3 添加ODBC數據源

打開“控制面板”-“管理工具”-“ODBC 數據源”,在彈出的視窗中的“用戶DSN”選項卡右側,選擇“添加”,在新資料庫源中會出現兩個MySQL驅動,分別為“MySQL ODBC 5.3 ANSI Driver”及"MySQL ODBC 5.3 Unicode Driver",很明顯兩者的區別在於編碼標準。我選擇的是Unicode版本。選中其中一個,點完成即可

1.1和1.2的配置順序可以隨意,但1.3必須在1.2之後,否則在ODBC數據源中添加新數據源時,是找不到MySQL選項的。

2. VBA連接MySQL

在按照1.1步驟配置了環境支持後,就可以在VBA中使用代碼連接MySQL了。

先定義連接對象

Dim conn as ADODB.Connection
Set conn = new ADODB.Connection

連接資料庫

conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=localhost;DB=test;UID=root;PWD=root;OPTION=3;"
conn.Open

在這裡可以看到,Driver變數的值是必須要和數據源中添加的新數據源一致的,否則會提示找不到數據源。

致此,資料庫連接成功!

可以使用連接對象的State屬性和Version屬性查看資料庫狀態和版本(檢查是否連接成功)

MsgBox("資料庫狀態:" & conn.State & vbCrLf & "資料庫版本:" & conn.Version)

最後關閉資料庫連接

conn.Close
Set conn = Nothing

3. VBA讀寫MySQL數據表

3.1 讀取MySQL數據到Excel

代碼如下:

Sub db()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set conn = New ADODB.Connection
    Set rs = New Recordset

    conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=localhost;DB=test;UID=root;PWD=root;OPTION=3;"
    conn.Open

    Set rs = conn.Execute("select * from `test`", iRowscount, adCmdText)
    Range("a1:b1").Value = Array("ID", "Name")
    Range("A2").CopyFromRecordset rs
   
    rs.Close: Set rs = Nothing
    conn.Close: Set conn = Nothing
End Sub

相比前面的代碼,以上代碼多了Recordsetconn.ExecuteRecordset用於接收SQL查詢語句返回的結果集。conn.Execute則用於執行SQL語句,其第一個參數為SQL語句,第二個參數為這個SQL語句影響到的行數,第三個參數是(我也不懂,照寫吧)。接下來的兩行Range是用於把查詢結果複製到Excel表格中的。

3.2 寫入數據到MySQL

其實寫入數據,只需要把上例中的SQL語句改成UPDATE或者INSERT即可,就不多說了。

4. 在Excel中直接操作MySQL

MySQL推出了一個Excel插件,用於直接在Excel操作MySQL資料庫。

首先需要下載:Download MySQL for Excel

下載完運行安裝即可。

然後打開(重啟)Excel,打開時可能會詢問是否添加該插件。打開後,在菜單欄點開“數據”,即可在右側看到有個MySQL for Excel的東西。點開它,就會出現本地的MySQL資料庫。

MySQL for Excel

可以右鍵單擊其中的資料庫,編輯連接信息:

或者雙擊打開資料庫目錄,依然打開數據表目錄,再選中其中一個數據表時,在下方會出現三個選項,分別是導入MySQL數據、編輯MySQL數據、添加MySQL數據。如果選中導入或編輯,都會在Excel中新增一個工作表用於操作數據,如果是選擇添加,則不會。至於具體的操作,就都是傻瓜式的了,這裡就不再多講了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Vysor Pro破解助手(Vysor Crack Assistant),支持V1.6.6到V1.7.7之間的版本。 ...
  • 背景描述 重裝的Mac系統,一切開發相關的配置從零開始。 描述文件 初始狀態 從開發者賬號上下載開發所需要的描述文件之後,提示如下 它提示4個要點的信息缺少了2個,點擊紅框部分,提示如下 它提示現在使用的描述文件中的證書是缺乏與其相對的私鑰的,私鑰是從當前設備製作的,之後還需要上傳到開發者賬號進行重 ...
  • 在String.xml中添加: ...
  • 一直以來,做 Java web 開發都是用 eclipse , 可是到 eclipse 官網一看,我的天 http://www.eclipse.org/downloads/eclipse-packages/ 那麼多應該下載哪一個?這是一個問題? 其實 eclipse 為每一種開發者,都提供了不同的版 ...
  • 1.MongoDB簡介 MongoDB介紹 MongoDB是面向文檔的非關係型資料庫,不是現在使用最普遍的關係型資料庫,其放棄關係模型的原因就是為了獲得更加方便的擴展、穩定容錯等特性。面向文檔的基本思路就是:將關係模型中的“行”的概念換成“文檔(document)”模型。面向文檔的模型可以將文檔和數 ...
  • 一般namenode只格式化一次,重新格式化不僅會導致之前的數據都不可用,而且datanode也會無法啟動。在datanode日誌中會有類似如下的報錯信息: java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-root/dfs/da ...
  • 0x00 背景 這兩天處於轉牛角尖的狀態,非常不好。但是上一篇的中提到的問題總算是總結了些東西。 傳送門:疑問點0x02(4) 0x01 測試過程 (1)測試環境情況:創建瞭如下測試表test, mysql> select * from test;+ + + +| user_id | user | ...
  • 【1. 問題描述】 【2. 查找原因】 【3. 解決問題】 本文網址[tom-and-jerry發佈於2017-05-20 18:46] http://www.cnblogs.com/tom-and-jerry/p/6882857.html ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...