Thoát Sub khi ấn nút Cancel trong ADO

Liên hệ QC

HUNGNGUYENCONG

Thành viên chính thức
Tham gia
18/7/19
Bài viết
54
Được thích
3
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!
 

File đính kèm

  • Nhập.xlsm
    153.2 KB · Đọc: 15
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!
Thay sub này cho sub cũ cùng tên. Thêm 2 bẫy lỗi trong đó
PHP:
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
 
Upvote 0
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 ạ.
 

File đính kèm

  • BÁN.rar
    641.6 KB · Đọc: 4
Upvote 0
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 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.
 
Upvote 0
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.
 
Upvote 0
Dạ ,đúng là lỗi do tên Sheet,em cảm ơn mọi người ạ.
 
Upvote 0
Upvote 0
Malcontent hơi yếu. Tôi giữ phép lịch sự mà bác.
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. :D
Dysydent (dissident) trong tiếng Ba Lan có nghĩa là người bất đồng chính kiến, danh từ dùng để chỉ một loại người, thế thôi. Còn malkontent có ý chê trách "suốt ngày lèm bèm, ca thán".
 
Upvote 0
Hỏi sai người cho bị mắng. Hỏi anh tác giả đầu tiên (Microsoft)
...
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.

@người hỏi:
Đoạn code ấy nó cần dòng On Error Resume Next đi trước nó.
Kết quả của 4 dòng ấy là đổi đĩa cứng theo ưu tiên G > D > E
Nếu có đĩa G thì chọn G.
Nếu không có G thì chọn D
Nếu không có D thì chọn E
Và nếu không có cả E thì ở lại đĩa hiện tại.
 
Upvote 0
Ý người ta có lẽ khác anh ạ. Là tại sao trong code có 3 ChDrive, chúng làm gì trong code đó. :D
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.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom