Excel VBA 連接各種數據庫(三) VBA連接SQL Server數據庫


本文主要涉及:

  1. VBA中的SQL Server環境配置
  2. VBA連接SQL Server數據庫
  3. VBA讀寫SQL Server數據
  4. 如何安裝SQL Client

系統環境:

  • Windows 7 64bit
  • Excel 2016 64bit

1. VBA連接SQL Server前的環境配置

在Excel這邊,需要先在VBE中啟動數據庫連接支持。按下Alt+F11打開VBE,在菜單欄選擇“工具”-“引用”,在彈出的引用窗口中,找到"Microsoft ActiveX Data Objects 6.1 Library"和"Microsoft ActiveX Data Objects Recordset 2.8 Library",把前面的框勾選上,點擊確定即可。 (如果不是這兩個版本,則選擇一個版本號最高的勾選即可,如果是需要分享給office2003版的用戶,建議勾選版本最低的)

2. VBA連接SQL Server

在按照上述步驟配置了環境支持后,就可以在VBA中使用代碼連接SQL Server了。

首先需定義連接對象:

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

這里也可以簡寫為:

Dim con As New ADODB.Connection

連接數據庫

conn.ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"
conn.Open

連接字符串ConnectionString中的各個參數應該很明了,就不一一解釋了。

上一段代碼也可以簡寫為

con.Open "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"

至此,數據庫連接成功!

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

MsgBox("連接成功!" & vbCrLf & "數據庫狀態:" & con.State & vbCrLf & "數據庫版本:" & con.Version)

最后關閉數據庫連接

con.Close
Set con = Nothing

整個過程的完整代碼如下:

Sub 連接SQL Server數據庫()
'1. 引用ADO工具
'2. 創建連接對象
Dim con As New ADODB.Connection
'3. 建立數據庫的連接
con.ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"
con.Open MsgBox ("連接成功!" & vbCrLf & "數據庫狀態:" & con.State & vbCrLf & "數據庫版本:" & con.Version) con.Close Set con = Nothing End Sub

 

3. VBA讀寫SQL Server數據表

3.1 讀取SQL Server數據到Excel

代碼如下:

Sub linkSQL Server()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
'配置連接串
    conn.ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.1;Database=XXXXX;Uid=sa;Pwd=123456"
    conn.Open
'從test數據庫的YGXM表中取出所有數據
    rs.Open "select * from `YGXM`", conn
'設置表頭
    Range("A1:B1").Value = Array("ID", "Name")
'將數據輸出到工作表
    Range("A2").CopyFromRecordset rs
'關閉連接
    rs.Close: Set rs = Nothing
    conn.Close: Set conn = Nothing
End Sub

相比前面的代碼,以上代碼多了  ADODB.Recordset  和  rs.Open,ADODB.Recordset  用於執行SQL語句並接收查詢語句返回的結果集。
這里需要提一下的是,在VBA中執行SQL語句有兩種方式,其一是使用連接對象執行:  conn.Execute  ,其第一個參數就是SQL語句;另一種則使用結果集對象執行:  rs.Open  ,這種方式有兩個必要參數,分別是SQL語句和連接對象,如上例中的  rs.Open "select * from `test`", conn  。
接下來的兩行Range是用於把查詢結果復制到Excel表格中的。

3.2 寫入數據到SQL Server

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

 

番外篇—— 安裝SQL Server client 服務


 

如果你正好需要使用其他語言通過ODBC連接SQL Server,可能需要先安裝SQL Server client服務。

可以選擇使用官方安裝包,或者使用Navicat連接一次SQL Server(第一次連接時如果沒安裝會提示你安裝)

這里以使用官方安裝包為例:                                                        下載地址  提取碼: 913s 

一路下一步,在這一步選擇“此功能及所有子功能將安裝到本地硬盤上

  

 然后繼續一路下一步即可。

ODBC的設置和MySQL或Oracle類似,在此不再贅述,如需要可以留言或者發郵件討論。

 

 

 PS:數據庫連接工具推薦使用Navicat,可以同時連接不同的數據庫,非常方便。

我常用的是11.0.16版本   下載地址   提取碼: s5kt

 

往期鏈接:

Excel VBA 連接各種數據庫(一) VBA連接MySQL數據庫

Excel VBA 連接各種數據庫(二) VBA連接Oracle數據庫

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM