Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Lỗi Windows

Sửa lỗi Run-time Error 1004 trong Excel (VBA Macro)

Lỗi Run-time error 1004 thường gặp khi chạy macro copy worksheet trong Excel 2003/2007+. Hai dạng thông báo phổ biến:

  • Copy Method of Worksheet Class failed
  • Application-defined or object-defined error

Nguyên nhân

Macro copy sheet vào workbook có defined name (định danh) mà chưa được save và close trước khi chạy macro. Giới hạn copy khoảng vài trăm lần tùy kích thước sheet.

Giải pháp: Sửa code macro - Save/Close định kỳ

Thêm đoạn code save, close, mở lại workbook sau mỗi 100 lần copy (số lần tùy chỉnh):

For iCounter = 1 To 275
    oBook.Worksheets(1).Copy After:=oBook.Worksheets(1)
    ' Save, close, reopen sau 100 lần:
    If iCounter Mod 100 = 0 Then
        oBook.Close SaveChanges:=True
        Set oBook = Nothing
        Set oBook = Application.Workbooks.Open("c:\test2.xls")
    End If
Next

Cách khắc phục thay thế: Dùng Template (.xltx)

  1. Tạo workbook mới, xóa tất cả sheet trừ 1
  2. Định dạng, thêm dữ liệu/biểu표 mẫu
  3. File → Save As → chọn Excel Template (.xltx)
  4. Trong code VBA dùng: Sheets.Add Type:="đường_dẫn\ten_file.xltx"

Cách này tránh hoàn toàn lỗi 1004 vì không copy sheet mà tạo mới từ template.