VBA可以連線mysql資料庫

Excel VBA操作Access資料庫有什麼優勢呢?

首先,對於資料庫要有一點了解,資料庫就是一個庫房,裡面存放的不是糧食,也不是商品,而是資料,資料這個東西有點虛幻,看得見摸不著。

但通過對資料的應用和處理之後,就變成了某些實體。從基本理論上來講,資料就是物質世界的本源,一切的存在實體都可以用資料來描述。

所以,未來世界也許就只是一個虛擬的資料世界,而我們的身體或看到或看不到的一切實體將變得可有可無,也就是意識和世界全部數字化了。

本節介紹一下,如何用VBA和Access資料庫建立聯絡,然後讀取資料庫裡的記錄,顯示到Excel工作表當中。

為什麼要這麼做呢?

因為資料庫可儲存的資料是Excel無法比較的,體量和應用完全不在一個層級上級。

上圖表格,就是從資料庫讀取的資訊,並不是在Excel中建立的,具體方法,慢慢講來。

下圖為Access資料新建的表格內容,和上圖對比就明白了。

不會Access建表操作,需要補一下資料庫操作學習,當然了,如果對SQL語句也沒有基礎,感覺下面的內容也沒必要看了,因為涉及資料庫操作的方法,是用一些SQL資料庫語句完成的。

重點看一下,關鍵程式碼

'查詢Access資料庫 Private Sub CommandButton1_Click()  Dim uADO, rsADO As Object  Dim strPath, strSql As String  Dim i As Integer, ri As Integer  Set uADO = CreateObject("ADODB.Connection") '新建資料庫連線物件  Set rsADO = CreateObject("ADODB.RecordSet") '新建記錄集物件  strPath = ThisWorkbook.Path & "/udata.accdb " '設定資料庫地址  uADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath '開啟資料庫  strSql = "Select * From UserInfo WHERE 部門='辦公室' " '設定查詢語句  rsADO.Open strSql, uADO, 1, 3 '執行查詢  Dim R As Range  Set R = ActiveSheet.Range("B2")  ActiveSheet.UsedRange.Clear  For i = 0 To rsADO.Fields.Count - 1     R.Offset(0, i).Value = rsADO.Fields(i).Name '輸出欄位名  Next i  Set R = R.Offset(1, 0)  Do Until rsADO.EOF '迴圈查詢到資料 直到記錄最後一條     For i = 0 To rsADO.Fields.Count - 1        R.Offset(ri, i).Value = rsADO.Fields(i).Value '輸出資料表內容     Next i     ri = ri   1     rsADO.movenext '指向下一條記錄     DoEvents  Loop  rsADO.Close '關閉記錄集  Set uADO = Nothing  Set rsADO = Nothing End Sub

程式碼中有註釋,不做詳細介紹。

下面是否主要程式碼說明:

首先,新建資料庫連線物件 uADO,這個物件實現和資料庫建立連線

Set uADO = CreateObject("ADODB.Connection")

建立連線後用下面語句是開啟資料庫並建立連線 uADO.Open

uADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath '開啟資料庫

Open方法中用了兩個引數,一個是Provider,一個Source

Provider是連線字串,根據Excel應用版本不同這個字串也不同,本示例應用Microsoft.ACE.OLEDB.12.0,Excel 2016。

Source參數列示資料來源地址,也就是資料庫檔案地址。

strPath是存放資料庫檔案的路徑和檔名字串變數,根據你的檔案地址進行修改。

strPath = ThisWorkbook.Path & "/udata.accdb " '設定資料庫地址

上面程式碼執行之後來就建立了Excel和Access連線,接下來新建個一記錄集物件rsADO

對於資料庫的操作,將用到rsADO記錄集。

Set rsADO = CreateObject("ADODB.RecordSet")

同樣也使用Open方法開啟記錄集。

引數有5個,下面使用了4個,當然了引數是可以忽略的。

如果下示例:

strSql = "Select * From UserInfo WHERE 部門='辦公室' " '設定查詢語句

rsADO.Open strSql, uADO, 1, 3 '執行查詢

strSql是查詢語句,也就是通過這樣一個查詢,返回我們想要的資料,儲存到rsADO記錄集當中。

uADO是之前開啟的資料庫連線物件。

ADO是微軟的 ActiveX 資料物件(ActiveX Data Objects),應用十分廣泛,在對資料進行操作的過程當中,除Excel之外,可以更加方便快捷地提高資料處理能力。

歡迎關注、收藏

---END---