Top doanh nghiệp đã đăng ký cho nhân viên
Bạn sẽ học được gì?
Khoá học này sẽ có:
Video
11h 45m giờ học
Article
0 bài viết chuyên môn
Material
7 tài liệu đính kèm
Exam questions
4 đề thi ghi nhớ kiến thức
Nội dung khoá học
5 Chương . 111 bài giảng . 11h 45m giờ học
Mở rộng tất cả các phầnMô tả khoá học
Trong khóa VBAG01 - khóa học lập trình VBA, các bạn đã được làm quen với các kiến thức cơ bản của VBA như Code, Module và ứng dụng vào các công việc tự động hóa quy trình trên Excel hằng ngày.
Trong khóa VBAG02 này, Gitiho sẽ giới thiệu tới các bạn lập trình vba trong Excel - phần nâng cao như kiến thức về Mảng, cách sử dụng truy vấn SQL hay cách sử dụng nhiều công cụ nâng cao khác trong thư viện của Microsoft.
Với các kỹ năng này, bạn sẽ trở thành những Chuyên gia Excel thực thụ, với kỹ năng lập trình, tự động hóa và xử lý mọi công việc trên Excel. Cùng tìm hiểu ngay khóa học VBAG02 - Ứng dụng Mảng, SQL và các Công cụ Nâng cao khác trong Excel và VBA nhé.
Khóa học VBAG02 bao gồm 5 Chương, 111 bài giảng, 1h 45m giờ giúp bạn hoàn thiện kỹ năng sử dụng SQL VBA Excel nâng cao để gia tăng hiệu suất công việc và tiết kiệm thời gian.
Nội dung khóa học được thiết kế gần với thực tiễn, bám sát vào yêu cầu thực tế tại doanh nghiệp, giúp bạn nhanh chóng áp dụng các kiến thức học được và công việc hàng ngày hiệu quả.
Chương trình học được cập nhật thường xuyên để đảm bảo kiến thức bạn học luôn phản ánh xu hướng mới nhất trong lĩnh vực.
Giảng viên của Gitiho có nhiều năm kinh nghiệm làm việc và dạy học Excel, VBA thực tiễn, luôn sẵn sàng giải đáp mọi thắc mắc của học viên trong giờ hành chính.
Ngoài tài liệu học tập đa dạng, video hướng dẫn chi tiết, thì ở Gitiho, bạn có thể nhanh chóng sở hữu kỹ năng sử dụng mảng, SQL và Excel VBA nâng cao nhờ phương pháp học luyện tập có chủ đích. Đây là phương pháp được nhiều người thành công như Elon Musk hay Ronaldo sử dụng để học bất kỳ điều gì.
Học xong, bạn sẽ được cấp chứng chỉ hoàn thành khóa học, giúp bạn có thể khẳng định và công nhận về những cố gắng của mình trước lãnh đạo hay nhà tuyển dụng.
Sau khi hoàn thành khóa học VBAG02, bạn có thể tự tin:
Biết cách tích hợp và sử dụng SQL trong Excel để truy vấn và xử lý dữ liệu hiệu quả, và tự động hóa quy trình làm việc hàng ngày.
Ứng dụng các kỹ thuật xử lý mảng trong Excel, VBA để tối ưu quá trình xử lý dữ liệu, tăng tốc các phép toán phức tạp.
Kết hợp mảng và các hàm tùy chỉnh để tạo Function cho SQL trên Excel giúp thực hiện các tác vụ truy vấn và phân tích dữ liệu mạnh mẽ hơn.
Khám phá và ứng dụng các kỹ thuật nâng cao bằng cách sử dụng Dictionary trong VBA, giúp quản lý và thao tác dữ liệu hiệu quả hơn.
Nâng cao kỹ năng sử dụng SQL trong các tình huống thực tế, viết và tối ưu hóa các truy vấn SQL để phân tích và xử lý dữ liệu lớn hiệu quả.
Khóa học này dành cho những ai hay phải làm việc với Excel và VBA, muốn nâng cao kỹ năng xử lý và phân tích dữ liệu phức tạp, hay tự động hóa quy trình làm việc với các công cụ nâng cao.
Khóa học phù hợp với người làm việc liên quan đến số liệu như phân tích dữ liệu, kế toán, tài chính, marketing, sale,...
Ngoài ra, nếu như bạn cũng có thể tham gia khóa học nếu muốn nâng cao kỹ năng dùng Excel VBA nâng cao để có thêm cơ hội trong công việc và thăng tiến trong sự nghiệp.
Đăng ký ngay khóa học VBAG02 - Ứng dụng Mảng, SQL và các Công cụ Nâng cao khác trong Excel và VBA để phát triển kỹ năng sử dụng mảng, SQL trong Excel VBA giúp bạn xử lý và phân tích dữ liệu mượt mà hơn.
Gitiho luôn cam kết hiệu quả với học viên, khóa học online thực hành, áp dụng ngay vào để nâng cao năng suất làm việc. Gitiho cam kết hoàn tiền trong 365 ngày nếu khóa học không hiệu quả.
Đánh giá của học viên
5/5
3 Đánh giá và nhận xét
100 %
0 %
0 %
0 %
0 %
09:41 12/11/2021
04:39 25/08/2021
12:46 06/08/2021
Giảng viên:
4.8 điểm đánh giá
973 đánh giá
343,307 học viên
101 khóa học
Hỏi đáp khóa học
Thảo luận về bài học
834 thảo luận
Nguyễn Minh Hào
https://drive.google.com/file/d/1BxwIT5wOI49PVAlyQqF39bqYMCfKsrV7/view
file access này khoá thì không lấy dc dữ liệu còn mở thì lấy được mong thầy giúp đỡ ạ
Tuấn Ba [Chuyên gia]
Bạn có để pass vẫn lấy được dữ liệu đó, bạn xem lại đường dẫn của bạn có dấu tiếng việt không nhé.
Nguyễn Minh Hào
0983470546
Trợ Giảng Gitiho
Dạ vâng không biết Gitiho có thể giúp đỡ gì cho Anh/Chị ạ?
Nguyễn Minh Hào
Option Explicit
Function QuerySQL(SQLQuery As String, spart As String, Optional Hr As Boolean = False, Optional Pasword As String = "123")
Dim Cnn As Object, lrs As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo ThoatLrs
lrs.Open SQLQuery, Cnn
Dim arr As Variant
arr = lrs.Getrows
GoTo ThoatLrs
ThoatLrs:
If IsArray(arr) Then
Dim Row As Long, Col As Long, i As Long, j As Long, kq As Variant, rs As Integer
If Hr = True Then
rs = 1
Else
rs = 0
End If
Row = UBound(arr, 2) + rs
Col = UBound(arr, 1)
ReDim kq(Row + 1 + rs, Col + rs)
For i = 0 To Row
For j = 0 To Col
If (i = 0 And Hr = True) Then
kq(0, j) = lrs.Fields(j).Name
Else
kq(i, j) = arr(j, i - rs)
End If
Next j
Next i
QuerySQL = kq
lrs.Close: Cnn.Close
Erase arr: Erase kq
Else
QuerySQL = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
End If
Else
QuerySQL = "Không có k" & ChrW(7871) & "t n" & ChrW(7889) & "i"
End If
End Function
Function QuerySQLExecute(SQLQuery As String, spart As String, Optional loi As Boolean = False, Optional Pasword As String = "123") As Boolean
Dim Cnn As Object, cmd As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean, Thongbao As String
Set Cnn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo Err
With cmd
.ActiveConnection = Cnn
.CommandText = SQLQuery
.Execute
End With
Thongbao = "Th" & ChrW(7921) & "c hi" & ChrW(7879) & "n th" & ChrW(224) & "nh c" & ChrW(244) & "ng"
' If Loi = True Then MsgBoxUni Thongbao, vbInformation, "Thông báo"
QuerySQLExecute = True
Exit Function
GoTo Err
End If
Err:
If loi = True Then
If (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Trùng khoá chính"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (Err.Description = "The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.") Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao
ElseIf (Err.Description = "Number of query values and destination fields are not the same.") Then
Thongbao = "S" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng tr" & ChrW(432) & ChrW(7901) & "ng truy v" & ChrW(7845) & "n v" & ChrW(224) & " tr" & ChrW(432) & ChrW(7901) & "ng " & ChrW(273) & ChrW(237) & "ch kh" & ChrW(244) & "ng b" & ChrW(7857) & "ng nhau"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
Else
MsgBox Err.Description
End If
End If
QuerySQLExecute = False
End Function
Function CheckPart(s As String) As String
Dim kq As String, GetName As String
GetName = Split(s, ".")(UBound(Split(s, ".")))
Option Explicit
Function QuerySQL(SQLQuery As String, spart As String, Optional Hr As Boolean = False, Optional Pasword As String = "123")
Dim Cnn As Object, lrs As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo ThoatLrs
lrs.Open SQLQuery, Cnn
Dim arr As Variant
arr = lrs.Getrows
GoTo ThoatLrs
ThoatLrs:
If IsArray(arr) Then
Dim Row As Long, Col As Long, i As Long, j As Long, kq As Variant, rs As Integer
If Hr = True Then
rs = 1
Else
rs = 0
End If
Row = UBound(arr, 2) + rs
Col = UBound(arr, 1)
ReDim kq(Row + 1 + rs, Col + rs)
For i = 0 To Row
For j = 0 To Col
If (i = 0 And Hr = True) Then
kq(0, j) = lrs.Fields(j).Name
Else
kq(i, j) = arr(j, i - rs)
End If
Next j
Next i
QuerySQL = kq
lrs.Close: Cnn.Close
Erase arr: Erase kq
Else
QuerySQL = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
End If
Else
QuerySQL = "Không có k" & ChrW(7871) & "t n" & ChrW(7889) & "i"
End If
End Function
Function QuerySQLExecute(SQLQuery As String, spart As String, Optional loi As Boolean = False, Optional Pasword As String = "123") As Boolean
Dim Cnn As Object, cmd As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean, Thongbao As String
Set Cnn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo Err
With cmd
.ActiveConnection = Cnn
.CommandText = SQLQuery
.Execute
End With
Thongbao = "Th" & ChrW(7921) & "c hi" & ChrW(7879) & "n th" & ChrW(224) & "nh c" & ChrW(244) & "ng"
' If Loi = True Then MsgBoxUni Thongbao, vbInformation, "Thông báo"
QuerySQLExecute = True
Exit Function
GoTo Err
End If
Err:
If loi = True Then
If (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Trùng khoá chính"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (Err.Description = "The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.") Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao
ElseIf (Err.Description = "Number of query values and destination fields are not the same.") Then
Thongbao = "S" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng tr" & ChrW(432) & ChrW(7901) & "ng truy v" & ChrW(7845) & "n v" & ChrW(224) & " tr" & ChrW(432) & ChrW(7901) & "ng " & ChrW(273) & ChrW(237) & "ch kh" & ChrW(244) & "ng b" & ChrW(7857) & "ng nhau"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
Else
MsgBox Err.Description
End If
End If
QuerySQLExecute = False
End Function
Function CheckPart(s As String) As String
Dim kq As String, GetName As String
GetName = Split(s, ".")(UBound(Split(s, ".")))
Option Explicit
Function QuerySQL(SQLQuery As String, spart As String, Optional Hr As Boolean = False, Optional Pasword As String = "123")
Dim Cnn As Object, lrs As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo ThoatLrs
lrs.Open SQLQuery, Cnn
Dim arr As Variant
arr = lrs.Getrows
GoTo ThoatLrs
ThoatLrs:
If IsArray(arr) Then
Dim Row As Long, Col As Long, i As Long, j As Long, kq As Variant, rs As Integer
If Hr = True Then
rs = 1
Else
rs = 0
End If
Row = UBound(arr, 2) + rs
Col = UBound(arr, 1)
ReDim kq(Row + 1 + rs, Col + rs)
For i = 0 To Row
For j = 0 To Col
If (i = 0 And Hr = True) Then
kq(0, j) = lrs.Fields(j).Name
Else
kq(i, j) = arr(j, i - rs)
End If
Next j
Next i
QuerySQL = kq
lrs.Close: Cnn.Close
Erase arr: Erase kq
Else
QuerySQL = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
End If
Else
QuerySQL = "Không có k" & ChrW(7871) & "t n" & ChrW(7889) & "i"
End If
End Function
Function QuerySQLExecute(SQLQuery As String, spart As String, Optional loi As Boolean = False, Optional Pasword As String = "123") As Boolean
Dim Cnn As Object, cmd As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean, Thongbao As String
Set Cnn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo Err
With cmd
.ActiveConnection = Cnn
.CommandText = SQLQuery
.Execute
End With
Thongbao = "Th" & ChrW(7921) & "c hi" & ChrW(7879) & "n th" & ChrW(224) & "nh c" & ChrW(244) & "ng"
' If Loi = True Then MsgBoxUni Thongbao, vbInformation, "Thông báo"
QuerySQLExecute = True
Exit Function
GoTo Err
End If
Err:
If loi = True Then
If (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Trùng khoá chính"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (Err.Description = "The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.") Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao
ElseIf (Err.Description = "Number of query values and destination fields are not the same.") Then
Thongbao = "S" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng tr" & ChrW(432) & ChrW(7901) & "ng truy v" & ChrW(7845) & "n v" & ChrW(224) & " tr" & ChrW(432) & ChrW(7901) & "ng " & ChrW(273) & ChrW(237) & "ch kh" & ChrW(244) & "ng b" & ChrW(7857) & "ng nhau"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
Else
MsgBox Err.Description
End If
End If
QuerySQLExecute = False
End Function
Function CheckPart(s As String) As String
Dim kq As String, GetName As String
GetName = Split(s, ".")(UBound(Split(s, ".")))
GetName = LCase(GetName)
If (GetName = "xls" Or GetName = "xlsx" Or GetName = "xlsm" Or GetName = "xlsb") Then
kq = "EXCEL"
ElseIf (GetName = "mdb" Or GetName = "accdb") Then
kq = "ACCESS"
Else
kq = "SQLSEVER"
End If
CheckPart = kq
End Function
nhờ thầy xem dùM. EM THÊM MẬT KHẨU VÀO THÌ K LẤY DƯỢC DỮ LIỆU CÒN BỎ MẬT KHẨU LẠI LẤY DƯỢC DỮ LIỆU. THẦY CÓ THỂ LÀM VI DEO HƯỚNG DẪN GIÚP EM ẠOption Explicit
Function QuerySQL(SQLQuery As String, spart As String, Optional Hr As Boolean = False, Optional Pasword As String = "123")
Dim Cnn As Object, lrs As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo ThoatLrs
lrs.Open SQLQuery, Cnn
Dim arr As Variant
arr = lrs.Getrows
GoTo ThoatLrs
ThoatLrs:
If IsArray(arr) Then
Dim Row As Long, Col As Long, i As Long, j As Long, kq As Variant, rs As Integer
If Hr = True Then
rs = 1
Else
rs = 0
End If
Row = UBound(arr, 2) + rs
Col = UBound(arr, 1)
ReDim kq(Row + 1 + rs, Col + rs)
For i = 0 To Row
For j = 0 To Col
If (i = 0 And Hr = True) Then
kq(0, j) = lrs.Fields(j).Name
Else
kq(i, j) = arr(j, i - rs)
End If
Next j
Next i
QuerySQL = kq
lrs.Close: Cnn.Close
Erase arr: Erase kq
Else
QuerySQL = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
End If
Else
QuerySQL = "Không có k" & ChrW(7871) & "t n" & ChrW(7889) & "i"
End If
End Function
Function QuerySQLExecute(SQLQuery As String, spart As String, Optional loi As Boolean = False, Optional Pasword As String = "123") As Boolean
Dim Cnn As Object, cmd As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean, Thongbao As String
Set Cnn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo Err
With cmd
.ActiveConnection = Cnn
.CommandText = SQLQuery
.Execute
End With
Thongbao = "Th" & ChrW(7921) & "c hi" & ChrW(7879) & "n th" & ChrW(224) & "nh c" & ChrW(244) & "ng"
' If Loi = True Then MsgBoxUni Thongbao, vbInformation, "Thông báo"
QuerySQLExecute = True
Exit Function
GoTo Err
End If
Err:
If loi = True Then
If (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Trùng khoá chính"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (Err.Description = "The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.") Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao
ElseIf (Err.Description = "Number of query values and destination fields are not the same.") Then
Thongbao = "S" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng tr" & ChrW(432) & ChrW(7901) & "ng truy v" & ChrW(7845) & "n v" & ChrW(224) & " tr" & ChrW(432) & ChrW(7901) & "ng " & ChrW(273) & ChrW(237) & "ch kh" & ChrW(244) & "ng b" & ChrW(7857) & "ng nhau"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
Else
MsgBox Err.Description
End If
End If
QuerySQLExecute = False
End Function
Function CheckPart(s As String) As String
Dim kq As String, GetName As String
GetName = Split(s, ".")(UBound(Split(s, ".")))
Option Explicit
Function QuerySQL(SQLQuery As String, spart As String, Optional Hr As Boolean = False, Optional Pasword As String = "123")
Dim Cnn As Object, lrs As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo ThoatLrs
lrs.Open SQLQuery, Cnn
Dim arr As Variant
arr = lrs.Getrows
GoTo ThoatLrs
ThoatLrs:
If IsArray(arr) Then
Dim Row As Long, Col As Long, i As Long, j As Long, kq As Variant, rs As Integer
If Hr = True Then
rs = 1
Else
rs = 0
End If
Row = UBound(arr, 2) + rs
Col = UBound(arr, 1)
ReDim kq(Row + 1 + rs, Col + rs)
For i = 0 To Row
For j = 0 To Col
If (i = 0 And Hr = True) Then
kq(0, j) = lrs.Fields(j).Name
Else
kq(i, j) = arr(j, i - rs)
End If
Next j
Next i
QuerySQL = kq
lrs.Close: Cnn.Close
Erase arr: Erase kq
Else
QuerySQL = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
End If
Else
QuerySQL = "Không có k" & ChrW(7871) & "t n" & ChrW(7889) & "i"
End If
End Function
Function QuerySQLExecute(SQLQuery As String, spart As String, Optional loi As Boolean = False, Optional Pasword As String = "123") As Boolean
Dim Cnn As Object, cmd As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean, Thongbao As String
Set Cnn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo Err
With cmd
.ActiveConnection = Cnn
.CommandText = SQLQuery
.Execute
End With
Thongbao = "Th" & ChrW(7921) & "c hi" & ChrW(7879) & "n th" & ChrW(224) & "nh c" & ChrW(244) & "ng"
' If Loi = True Then MsgBoxUni Thongbao, vbInformation, "Thông báo"
QuerySQLExecute = True
Exit Function
GoTo Err
End If
Err:
If loi = True Then
If (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Trùng khoá chính"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (Err.Description = "The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.") Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao
ElseIf (Err.Description = "Number of query values and destination fields are not the same.") Then
Thongbao = "S" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng tr" & ChrW(432) & ChrW(7901) & "ng truy v" & ChrW(7845) & "n v" & ChrW(224) & " tr" & ChrW(432) & ChrW(7901) & "ng " & ChrW(273) & ChrW(237) & "ch kh" & ChrW(244) & "ng b" & ChrW(7857) & "ng nhau"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
Else
MsgBox Err.Description
End If
End If
QuerySQLExecute = False
End Function
Function CheckPart(s As String) As String
Dim kq As String, GetName As String
GetName = Split(s, ".")(UBound(Split(s, ".")))
Option Explicit
Function QuerySQL(SQLQuery As String, spart As String, Optional Hr As Boolean = False, Optional Pasword As String = "123")
Dim Cnn As Object, lrs As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean
Set Cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo ThoatLrs
lrs.Open SQLQuery, Cnn
Dim arr As Variant
arr = lrs.Getrows
GoTo ThoatLrs
ThoatLrs:
If IsArray(arr) Then
Dim Row As Long, Col As Long, i As Long, j As Long, kq As Variant, rs As Integer
If Hr = True Then
rs = 1
Else
rs = 0
End If
Row = UBound(arr, 2) + rs
Col = UBound(arr, 1)
ReDim kq(Row + 1 + rs, Col + rs)
For i = 0 To Row
For j = 0 To Col
If (i = 0 And Hr = True) Then
kq(0, j) = lrs.Fields(j).Name
Else
kq(i, j) = arr(j, i - rs)
End If
Next j
Next i
QuerySQL = kq
lrs.Close: Cnn.Close
Erase arr: Erase kq
Else
QuerySQL = "Không có d" & ChrW(7919) & " li" & ChrW(7879) & "u"
End If
Else
QuerySQL = "Không có k" & ChrW(7871) & "t n" & ChrW(7889) & "i"
End If
End Function
Function QuerySQLExecute(SQLQuery As String, spart As String, Optional loi As Boolean = False, Optional Pasword As String = "123") As Boolean
Dim Cnn As Object, cmd As Object, SQLQuyery As String, Path As String, Ketnoi As Boolean, Thongbao As String
Set Cnn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
If (CheckPart(spart) = "EXCEL") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=0"";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"";"
End If
ElseIf (CheckPart(spart) = "ACCESS") Then
If Val(Application.Version) > 12 Then
Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
Else
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & spart & ";Persist Security Info=False; Jet OLEDB:Database Password=" & Pasword & ";"
End If
Else
Cnn.ConnectionString = spart
End If
Ketnoi = False
On Error GoTo ThoatKN
Cnn.Open
Ketnoi = True
GoTo ThoatKN
ThoatKN:
If (Ketnoi) Then
On Error GoTo Err
With cmd
.ActiveConnection = Cnn
.CommandText = SQLQuery
.Execute
End With
Thongbao = "Th" & ChrW(7921) & "c hi" & ChrW(7879) & "n th" & ChrW(224) & "nh c" & ChrW(244) & "ng"
' If Loi = True Then MsgBoxUni Thongbao, vbInformation, "Thông báo"
QuerySQLExecute = True
Exit Function
GoTo Err
End If
Err:
If loi = True Then
If (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Trùng khoá chính"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (Err.Description = "The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.") Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao
ElseIf (Err.Description = "Number of query values and destination fields are not the same.") Then
Thongbao = "S" & ChrW(7889) & " l" & ChrW(432) & ChrW(7907) & "ng tr" & ChrW(432) & ChrW(7901) & "ng truy v" & ChrW(7845) & "n v" & ChrW(224) & " tr" & ChrW(432) & ChrW(7901) & "ng " & ChrW(273) & ChrW(237) & "ch kh" & ChrW(244) & "ng b" & ChrW(7857) & "ng nhau"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
ElseIf (InStr(Err.Description, "The duplicate key value is")) Then
Thongbao = "Tr" & ChrW(249) & "ng kho" & ChrW(225) & " ch" & ChrW(237) & "nh kh" & ChrW(244) & "ng th" & ChrW(7875) & " th" & ChrW(234) & "m"
MsgBox Thongbao, vbExclamation, "Thông Báo Error"
Else
MsgBox Err.Description
End If
End If
QuerySQLExecute = False
End Function
Function CheckPart(s As String) As String
Dim kq As String, GetName As String
GetName = Split(s, ".")(UBound(Split(s, ".")))
GetName = LCase(GetName)
If (GetName = "xls" Or GetName = "xlsx" Or GetName = "xlsm" Or GetName = "xlsb") Then
kq = "EXCEL"
ElseIf (GetName = "mdb" Or GetName = "accdb") Then
kq = "ACCESS"
Else
kq = "SQLSEVER"
End If
CheckPart = kq
End Function
nhờ thầy xem dùM. EM THÊM MẬT KHẨU VÀO THÌ K LẤY DƯỢC DỮ LIỆU CÒN BỎ MẬT KHẨU LẠI LẤY DƯỢC DỮ LIỆU. THẦY CÓ THỂ LÀM VI DEO HƯỚNG DẪN GIÚP EM Ạ
Tuấn Ba [Chuyên gia]
Bạn lấy nguyên code này và thử
Function QuerySQL(SQLQuery As String, spart As String, Optional Hr As Boolean = False, Optional Pasword As String = “”)
gọi hàm arr = QuerySQL("select * from abc",duongdan, true, “abc”)
Nguyễn Minh Hào
Thầy hướng dẫn em code đặt mất khẩu cho file access và lấy dữ liệu từ file access đang khoá với ạ. em cảm ơn
Tuấn Ba [Chuyên gia]
Sub RunSQLQuery()
Dim SQLQuyery As String, dc As Long, kq As Variant
dc = TEAMCDPS.Range("A" & TEAMCDPS.Rows.Count).End(xlUp).Row
If dc >= 2 Then TEAMCDPS.Range("A2:ADO" & dc).ClearContents
kq = QuerySQL("select * from data", "D:\desktop C\Phammemketoan\Proexcel\Bunoca\Bunoca.ACCDB", True, "LUONGGIAMINH")
If IsArray(kq) Then
TEAMCDPS.Range("A3").Resize(UBound(kq, 1), UBound(kq, 2) + 1) = kq
Else
TEAMCDPS.Range("A3").Value = kq
End If
End Sub
bạn làm như sau
nntien
Ad có thể làm video chia sẻ cách tạo form đăng nhập và phân quyền vào SQL sever ko?
Tuấn Ba [Chuyên gia]
Phân quyền vba với trường hợp này hơi khó, cái này phải sử dụng cách tạo db trong sqlsever rồi mới sử lý được.
Giá ưu đãi chỉ còn 1 ngày
499,000đ
999,000đĐăng ký cho doanh nghiệp
Giúp nhân viên của bạn truy cập không giới hạn 500+ khoá học, mọi lúc, mọi nơi