HUNGNGUYENCONG
Thành viên chính thức
- Tham gia
- 18/7/19
- Bài viết
- 54
- Được thích
- 3
Thay sub này cho sub cũ cùng tên. Thêm 2 bẫy lỗi trong đóChào anh chị
Em có 1 đoạn code (lấy trên mạng) nhập dữ liệu từ file đang đóng,Khi chạy câu lệnh,chọn OPEN ,chọn file nhập thì không sao,nhưng khi chọn Cancel thì báo lỗi ,nhờ anh chị giúp khi chọn Cancel thì thoát luôn Sub ra ạ.Em cảm ơn!
Sub GetData(CellKQ As Range, sSQL As String)
Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim strConnect As String, Path
On Error Resume Next
ChDrive "E:"
ChDrive "D:"
ChDrive "G:"
On Error GoTo 0
Path = Application.GetOpenFilename
If Path = False Then
MsgBox "Chua chon file lay du lieu!"
Exit Sub
End If
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0; " _
& "Data Source = MY_FULL_NAME_FILEDATA; " _
& "Extended Properties='Excel 12.0; HDR=No; IMEX=1'; "
strConnect = Replace(strConnect, "MY_FULL_NAME_FILEDATA", Path)
Cnn.ConnectionString = strConnect
Cnn.Open
On Error GoTo loi
Rs.Open sSQL, Cnn, 3, 1
CellKQ.CopyFromRecordset Rs
Rs.Close
Cnn.Close
MsgBox "Cap nhat du lieu hoan tat", vbInformation, "Thong Tin Chuong Trinh"
Exit Sub
loi:
MsgBox "Co loi xay ra. Co the ban chon khong dung file." & vbNewLine & vbNewLine & Err.Description
End Sub
Tôi chưa tải file rar của bạn về nhưng tôi nghĩ là do cấu trúc dữ liệu file đó không đúng. Bạn cần xem mô tả lỗi tiếng Anh trên popup, nếu cần thiết gõ vào google dịch để biết rõ hơn.Cảm ơn anh,khi chạy lấy dữ liệu thì có file lấy được nhưng có file lại báo lỗi ,em có gửi theo file đính kèm,anh xem giúp với ạ.
Trong code có sSQL = "SELECT f2,f3,val(f6) FROM [Sheet$A2:AC]". Vì vậy tên sheet lấy dữ liệu phải là sheet. Không thể có tên là vd. blala, hichic hay sheet1 được.Cảm ơn anh,khi chạy lấy dữ liệu thì có file lấy được nhưng có file lại báo lỗi ,em có gửi theo file đính kèm,anh xem giúp với ạ.
Tôi thì lại cứ ngỡ tên ấy là tiếng Việt. (dịch ra tiếng Anh là dissident)if batman1 then
not Bruce Wayne and not người dơi
Thế không phải là malcontent?Tôi thì lại cứ ngỡ tên ấy là tiếng Việt. (dịch ra tiếng Anh là dissident)
Bác @batman1 cho cháu hỏi cái lệnh kia dùng để làm gì, ý cháu là tác dụng của nó trong đoạn code trên, cháu nghĩ hoài không ra.ChDrive "E:" ChDrive "D:" ChDrive "G:"
Tác giả như con chim trên mạng, bay biên bắc biên đông, chắc không có cơ hội bắt rồi bác, ý troiiiiiiiiiiiiiiiiiiiiiiiiiiiiiCái này phải hỏi tác giả chứ sao lại hỏi tôi?
Thực ra tôi không biết tiếng Anh. Do trong tiếng Ba Lan có từ malkontent (kẻ luôn không hài lòng về mọi thứ, luôn tìm cái thiếu sót, cái lỗi trong mọi thứ) nên tôi nghĩ sang tiếng Anh nó là malcontent.Malcontent hơi yếu. Tôi giữ phép lịch sự mà bác.
Không chỉ hỏi sai người, mà còn quote không đủ cho nên nhìn đoạn code ấy khó mà trả lời.Hỏi sai người cho bị mắng. Hỏi anh tác giả đầu tiên (Microsoft)
...
Ý người ta có lẽ khác anh ạ. Là tại sao trong code có 3 ChDrive, chúng làm gì trong code đó.Hỏi sai người cho bị mắng. Hỏi anh tác giả đầu tiên (Microsoft)
Vâng anh, tôi hỏi MS xong cũng thắc mắc lại tại sao lại set ổ đĩa hiện hành tuần tự ở 3 ổ khác nhau. Nếu anh VetMini không giải thích (với câu Resume next trên câu lệnh đó) thì tôi lại cho rằng chỉ có lần cuối có tác dụng.Ý người ta có lẽ khác anh ạ. Là tại sao trong code có 3 ChDrive, chúng làm gì trong code đó.