Kết nối Excel với SQL Server

Điều tuyệt với giúp bạn thể hiện đẳng cấp khi biết cách lập trình kết nối Excel với SQL Server

Có 2 cách để kết nối từ Excel đến SQL Server

  1. Kết nối tự động từ Excel đến SQL Server
  2. Kết nối bằng code VBA Excel đến SQL Server

(1) Kết nối tự động từ Excel đến SQL Server

cách này bạn tham khảo video học cách kết nối Excel đến SQL Server tự động
 

(2) Kết nối bằng code VBA Excel đến SQL Server

* Thêm thư viện vào file excel  Microsoft ActiveX Data Objects 2.6 Library


   2.1 Ví dụ mở kết nối từ VBA Excel tới SQL Server

Dim conSQL As New ADODB.Connection
    Dim record As New ADODB.Recordset
    
    ' bien de luu tru MAT KHAU ket SQL
    cnString = "PROVIDER=SQLOLEDB;Server=hongnhat2\SQLEXPRESS;DATABASE=PhanMemBanHang;UID=sa;PWD=123"
    
    On Error GoTo tbLoi
    conSQL.ConnectionString = cnString
    conSQL.Open
    MsgBox conSQL.State ' 1 kết nối thành công, 0 kết nối SQL thất bị
 
tbLoi:
    MsgBox Err.Description
  

 Câu hỏi: Code VBA phía trên đã sử dụng Try catch VBA , bạn hãy trả lời xem, nếu không có đoạn On Error GoTo tbLoi thì trong khi ứng dụng phần mềm thực tế sẽ bị trường hợp gì ?

 * Ví dụ code vba kết nối sql server in ra 1 cột



    Dim rcs As New ADODB.Recordset
    Dim strCn As String
    strCn = "PROVIDER=SQLOLEDB;SERVER=HONGNHAT2\SQLEXPRESS;DATABASE=nhanvien;UID=sa;PWD=123"

    Dim cn As New ADODB.Connection
    cn.ConnectionString = strCn
    cn.CommandTimeout = 30
    cn.Mode = adModeReadWrite
    cn.Open
    
    Dim cmd As New ADODB.Command
    With cmd
        .ActiveConnection = cn
        .CommandType = adCmdText
        .CommandTimeout = 60
        .CommandText = "Select * From dbo.tbNhanVien"
     End With
     Dim prm As Object
     
    rcs.CursorType = adOpenKeyset
    rcs.LockType = adLockBatchOptimistic
    rcs.Open cmd
    
    
    Set rcs = cmd.Execute
    
    Dim pos_row As Integer
    pos_row = 1
    
    Do While (Not rcs Is Nothing)
        If rcs.State = adStateClosed Then Exit Do
        While Not rcs.EOF        
           Cells(pos_row, 1) = rcs!HoTen
            rcs.MoveNext
            pos_row = pos_row + 1
        Wend
        Set rcs = rcs.NextRecordset
    Loop

2.2 Kết nối in tất cả các cột file Excel từ dữ liệu SQL Server

 
    Dim rcs As New ADODB.Recordset
    Dim strCn As String
    strCn = "PROVIDER=SQLOLEDB;SERVER=HONGNHAT2\SQLEXPRESS;DATABASE=nhanvien;UID=sa;PWD=123"

    Dim cn As New ADODB.Connection
    cn.ConnectionString = strCn
    cn.CommandTimeout = 30
    cn.Mode = adModeReadWrite
    cn.Open
    
    Dim cmd As New ADODB.Command
    With cmd
        .ActiveConnection = cn
        .CommandType = adCmdText
        .CommandTimeout = 60
        .CommandText = "Select * From dbo.tbNhanVien"
     End With
     Dim prm As Object
     
    rcs.CursorType = adOpenKeyset
    rcs.LockType = adLockBatchOptimistic
    rcs.Open cmd
    
    
    Set rcs = cmd.Execute
    
    Dim pos_row As Integer
    pos_row = 1 ' vi tri dong bat dau in
    pos_col = 1 ' vi tri cot bat dau in
    
    ' In tieu de
    For i = 0 To rcs.Fields.Count - 1
        Cells(pos_row, i + pos_col) = rcs(i).Name
    Next i
    
    pos_row = pos_row + 1
    
    Do While (Not rcs Is Nothing)
        If rcs.State = adStateClosed Then Exit Do
        While Not rcs.EOF
            For i = 0 To rcs.Fields.Count - 1
                 Cells(pos_row, i + pos_col) = rcs(i)
            Next i
            rcs.MoveNext
            pos_row = pos_row + 1
        Wend
        Set rcs = rcs.NextRecordset
    Loop

Mời bạn xem video về lập trình VBA kết nối từ Excel đến SQL Server

 2.3 Chèn dữ liệu vào SQL Server từ VBA Excel

Xem tại khóa học VBA nâng cao

 2.4 Xóa dữ liệu đến SQL Server từ VBA Excel

Xem tại khóa học VBA nâng cao

 

 

Bài viết liên quan:

Điều tuyệt với giúp bạn thể hiện đẳng cấp khi biết cách lập trình kết nối Excel với SQL Server