Run-time error '9' subscript out of range

Liên hệ QC
Dạ, cái này là của em chứ không phải của bạn @duongvanminh33 ạ.
tại em theo qui tắc riếng của em là tiếp đầu ngữ của biến là kiểu biến và tiếp theo là cái tên thể hiện.
ví dụ: wbThis có nghĩa là: wb=> kiểu là Workbook và This có nghĩa là ThisWorkBook
Bài đã được tự động gộp:


Mình thấy bạn đã làm việc thay đổi giá trị tại Cell I5 của Sheet3 bằng câu lệnh "wbThis.Sheets("Sheet3").Range("I5") = i" mà???
thế thì cái mật khẩu cho từng hàng dữ liệu thì cũng giống y chang các dữ liệu được điền vào khi thay đổi giá trị tại Cell I5 thôi!!!
thanks bạn nhìu nhé, có mỗi cái tạo mk tại ô vlookup range("") rùi nhét vô vòng for mail là chạy được rùi, dò cả buổi mới được, chân thành cảm ơn bạn
 
Dạ, cái này là của em chứ không phải của bạn @duongvanminh33 ạ.
tại em theo qui tắc riếng của em là tiếp đầu ngữ của biến là kiểu biến và tiếp theo là cái tên thể hiện.
ví dụ: wbThis có nghĩa là: wb=> kiểu là Workbook và This có nghĩa là ThisWorkBook
Bài đã được tự động gộp:


Mình thấy bạn đã làm việc thay đổi giá trị tại Cell I5 của Sheet3 bằng câu lệnh "wbThis.Sheets("Sheet3").Range("I5") = i" mà???
thế thì cái mật khẩu cho từng hàng dữ liệu thì cũng giống y chang các dữ liệu được điền vào khi thay đổi giá trị tại Cell I5 thôi!!!

"Object Doesn't Support this Method"
Bạn giúp mình lỗi này với, chạy dữ liệu ít thì không sao, khi gửi khoảng trên 35 người là sẽ xuất hiện lỗi này.
 
bạn chụp lại cái vị trí lỗi cho mình xem thử

Chỉ hiện một bảng thông báo thôi bạn, bấm chọn ok thì sẽ về lại đoạn copy sheet mà chưa được save lại.
Bài đã được tự động gộp:

bạn chụp lại cái vị trí lỗi cho mình xem thử
Chỉ hiện một bảng thông báo thôi bạn, bấm chọn ok thì sẽ về lại đoạn copy sheet mà chưa được save lại.
bạn chụp lại cái vị trí lỗi cho mình xem thử


Có nghĩa là sẽ có một bảng thông báo lỗi "Object Doesn't Support this Method", khi bấm ok thì sẽ về lại bình thường, ko có báo lỗi dòng nào code cả bạn à, tuy nhiên mình có để ý là nó lỗi chạy thường là tới đoạn copy range của sheet thiswb xong paste vô sheet là ngưng. chưa save được. Chạy khoảng 10 -20 người thì ổn, tuy nhiên chạy trên 35 người sẽ xuất hiện lỗi đó. Bạn giúp mình với nhé.
 
Lần chỉnh sửa cuối:
Chỉ hiện một bảng thông báo thôi bạn, bấm chọn ok thì sẽ về lại đoạn copy sheet mà chưa được save lại.

Có nghĩa là sẽ có một bảng thông báo lỗi "Object Doesn't Support this Method", khi bấm ok thì sẽ về lại bình thường, ko có báo lỗi dòng nào code cả bạn à, tuy nhiên mình có để ý là nó lỗi chạy thường là tới đoạn copy range của sheet thiswb xong paste vô sheet là ngưng. chưa save được. Chạy khoảng 10 -20 người thì ổn, tuy nhiên chạy trên 35 người sẽ xuất hiện lỗi đó. Bạn giúp mình với nhé.
Ngộ ta? thường thì nó chạy hay không chạy được code thôi nếu như Không bị lỗi dữ liệu.
Chú ý dòng này:
Mã:
sFile = FName & "\" & "Payslip Oct 2020 - " & wbThis.Sheets("Sheet3").Range("B11").Value & ".xlsx"
Tên file phải không có mấy cái ký tự đặc biệt ah....
 
Ngộ ta? thường thì nó chạy hay không chạy được code thôi nếu như Không bị lỗi dữ liệu.
Chú ý dòng này:
Mã:
sFile = FName & "\" & "Payslip Oct 2020 - " & wbThis.Sheets("Sheet3").Range("B11").Value & ".xlsx"
Tên file phải không có mấy cái ký tự đặc biệt ah....


Mã:
Sub Button7_Click2()
Dim OutApp As Object, OutMail As Object
Dim printFrom As Variant, printTo As Variant, mk As Long
Dim sFile As String, sPath As String
Dim i As Long
Dim j As Long
Dim FName As String
Dim fso As Object
Dim wbNew As Workbook, wbThis As Workbook
Dim Answer As Integer

Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error GoTo lbFinally
Answer = MsgBox("Do you want to save file and send mail?", vbQuestion + vbYesNo)
 
  If Answer = vbYes Then
    'MsgBox "You Choose Yes"
    FName = ThisWorkbook.Path & "\PhieuLuong - " & Format(Now, "MMM DD YY")
     Const DeleteReadOnly = True
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FolderExists(FName) Then
        fso.DeleteFolder (FName), DeleteReadOnly
        fso.CreateFolder (FName)
    End If
    If Not fso.FolderExists(FName) Then
        fso.CreateFolder (FName)
    End If
    Set wbThis = ThisWorkbook
    printFrom = wbThis.Sheets("PAYSLIP").Range("I8")
    printTo = wbThis.Sheets("PAYSLIP").Range("I9")
   ' mk = wbThis.Sheets("PAYSLIP").Range("I14")
    Set OutApp = CreateObject("Outlook.Application")
    For i = printFrom To printTo
        wbThis.Sheets("PAYSLIP").Range("I5") = i
        mk = wbThis.Sheets("PAYSLIP").Range("I14")
        
        Set wbNew = Workbooks.Add(xlWBATWorksheet)
      
        wbThis.Sheets("PAYSLIP").Range("A1:D33").Copy
        With wbNew.Sheets(1)
            .Range("A1:D33").PasteSpecial xlPasteValues
            .Range("A1:D33").PasteSpecial xlPasteFormats
            .Columns("A:D").AutoFit
            
        End With
        Application.CutCopyMode = False
        
        sFile = FName & "\" & wbThis.Sheets("PAYSLIP").Range("A9") & " - " & wbThis.Sheets("PAYSLIP").Range("B13") & ".xlsx"
        
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = wbThis.Sheets("PAYSLIP").Range("B12")
            .cc = ""
            .BCC = ""
            .Subject = wbThis.Sheets("PAYSLIP").Range("A9")
            .HTMLBody = " Dear " & wbThis.Sheets("PAYSLIP").Range("B11") & "</B> <BR><BR> Kindly find attachment payslip. <BR>" & _
            "<BR>Should you have any questions, do not hestitate to contact us." & _
            "<BR><BR>Thanks & regards</B><BR>" & _
            "</B>"
            wbNew.SaveAs Filename:=sFile, FileFormat:=51, Password:=mk, ReadOnlyRecommended:=True, CreateBackup:=False
             wbNew.Close False
             Set wbNew = Nothing
            .Attachments.Add (sFile)
            
            .send
            
        End With
        Set OutMail = Nothing
    Next i
    Set OutApp = Nothing
    Set OutMail = Nothing
    MsgBox "Mail send successfully"
    Else
    MsgBox "No Choose """
  End If
lbFinally:
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationSemiautomatic
    
    If Err <> 0 Then
        MsgBox Err.Description, vbCritical
    End If


End Sub

MÌNH TEST THÌ VẪN BỊ, BẠN KT GIÚP VỚI, HAY MINH THIẾU GIAO DIỆN REFERENCES -VBAPROJECT KHÔNG NHỈ ?? MÌNH MỚI TẬP TÀNH VBA NÊN KHÔNG RÀNH LẮM
 
Ngộ ta? thường thì nó chạy hay không chạy được code thôi nếu như Không bị lỗi dữ liệu.
Chú ý dòng này:
Mã:
sFile = FName & "\" & "Payslip Oct 2020 - " & wbThis.Sheets("Sheet3").Range("B11").Value & ".xlsx"
Tên file phải không có mấy cái ký tự đặc biệt ah....

LÚC BỊ LÚC KHÔNG BỊ, KHÓ HIỂU GHÊ
 
Ngộ ta? thường thì nó chạy hay không chạy được code thôi nếu như Không bị lỗi dữ liệu.
Chú ý dòng này:
Mã:
sFile = FName & "\" & "Payslip Oct 2020 - " & wbThis.Sheets("Sheet3").Range("B11").Value & ".xlsx"
Tên file phải không có mấy cái ký tự đặc biệt ah....


Mình đã thử không sử dụng ký tự đặc biệt rồi, tuy nhiên vẫn báo lỗi đó. Chọn gửi ít thì gửi được, cứ gửi trên 35 (minh gửi full 98 người) là sẽ bị báo lỗi đó.
 
Mình đã thử không sử dụng ký tự đặc biệt rồi, tuy nhiên vẫn báo lỗi đó. Chọn gửi ít thì gửi được, cứ gửi trên 35 (minh gửi full 98 người) là sẽ bị báo lỗi đó.
Không rõ file attach có nặng không, nên cho thời gian đợi cho outlook
Không có không xử lý kip thì có thể dễ xảy ra lỗi - vì quá tải
 
Cũng vậy nên cho 10 lần gửi nghỉ 1 thời gian giờ đợi
Vì xử lý tuần tự mà, cứ gọi hoài thằng ngoài nó nặng, nó phản ứng thôi
Éc. của mình mới test mẫu 98 người thôi, thêm mấy trăm người chắc chết mất . Mình thấy có mấy bài của các bạn khác, có người gửi đến mấy trăm cơ.
Bài đã được tự động gộp:

Không rõ file attach có nặng không, nên cho thời gian đợi cho outlook
Không có không xử lý kip thì có thể dễ xảy ra lỗi - vì quá tải

À thế cho mình hỏi chút, nếu code trên của mình, giờ làm thế nào để kéo dài thời gian xử lý ra được không ạ, vd như cho gửi tới 30 người và sẽ có khoàng tgian nghỉ 10s và tiếp tục xử lý không.
 
Éc. của mình mới test mẫu 98 người thôi, thêm mấy trăm người chắc chết mất . Mình thấy có mấy bài của các bạn khác, có người gửi đến mấy trăm cơ.
Bài đã được tự động gộp:



À thế cho mình hỏi chút, nếu code trên của mình, giờ làm thế nào để kéo dài thời gian xử lý ra được không ạ, vd như cho gửi tới 30 người và sẽ có khoàng tgian nghỉ 10s và tiếp tục xử lý không.
Thì bạn lấy bài người ta (bạn khác) tham khảo

Còn muốn dừng thì tìm kiêm với từ khóa Sleep, hay wait
 
"Object Doesn't Support this Method"
Bạn giúp mình lỗi này với, chạy dữ liệu ít thì không sao, khi gửi khoảng trên 35 người là sẽ xuất hiện lỗi này.
Dịch theo thông báo thì lỗi này có nghĩa là "đối tượng không hỗ trợ phương thức này", có nghĩa như kiểu thiswordbook.ahihi thì sẽ bị lỗi, sửa hết tên các thành viên cho chuẩn, như "CC" chứ không phải cc, ".Send" chứ không phải là ".send", những cũng không chắc nữa, trong file của bạn còn có các code khác phụ trợ chạy song song, hay cac add in?
 
Dịch theo thông báo thì lỗi này có nghĩa là "đối tượng không hỗ trợ phương thức này", có nghĩa như kiểu thiswordbook.ahihi thì sẽ bị lỗi, sửa hết tên các thành viên cho chuẩn, như "CC" chứ không phải cc, ".Send" chứ không phải là ".send", những cũng không chắc nữa, trong file của bạn còn có các code khác phụ trợ chạy song song, hay cac add in?

Tất cả toàn code cả, không có add in gì bạn ơi.
 

Ý mình là mình muốn khi đang chạy send thì sẽ có các thông tin như tên , mã số NV chạy kèm theo(hiển thị trên một thanh button ). Kiểu chạy nhấp nháy dữ liệu được chỉ định ở trên một button . Khi dừng nó đâu nó sẽ báo là chạy tới đó. Như chơi game quay vật phẩm thì sẽ có hiển thị vòng quay qua các vật phẩm đó trước khi tới vật phẩm trúng thường. Kiểu kiểu thế á.
 
Web KT
Back
Top Bottom