Computer >> Máy Tính >  >> Xử lý sự cố >> Lỗi Windows

Cách sửa lỗi thời gian chạy 1004 trong Excel

Lỗi thời gian chạy 1004 là một mã lỗi liên quan đến Microsoft Visual Basic đã được biết là ảnh hưởng đến người dùng Microsoft Excel. Lỗi được biết là phổ biến nhất trên Excel 2003 và Excel 2007, mặc dù không có phiên bản ứng dụng trang tính phổ biến nào của Microsoft dành cho máy tính là an toàn trước mối đe dọa là lỗi Run-time 1004. Trong hầu hết các trường hợp, người dùng bị ảnh hưởng bởi sự cố này sẽ thấy một trong các hai biến thể khác nhau của Lỗi thời gian chạy 1004. Tổng thể, hai biến thể của Lỗi thời gian chạy 1004 đọc:

Lỗi thời gian chạy‘ 1004 ’:
Phương pháp sao chép của lớp trang tính không thành công

Lỗi thời gian chạy‘ 1004 ’:
Lỗi do ứng dụng hoặc đối tượng xác định

Cách sửa lỗi thời gian chạy 1004 trong Excel

Thông báo lỗi chính xác mà bạn thấy cũng có thể thay đổi một chút, trong một số trường hợp, mặc dù mã lỗi sẽ vẫn giữ nguyên. Tuy nhiên, bất kể phiên bản nào của sự cố bạn gặp phải, nó hầu như luôn xảy ra khi chạy macro trong Excel được thiết kế để sao chép trang tính và sau đó đặt các bản sao vào cùng một sổ làm việc như trang tính gốc.

Không giống như các sự cố công nghệ tồi tệ nhất hiện có, nguyên nhân của lỗi Run-time 1004 trong Microsoft Excel đã được biết đến. Lỗi thời gian chạy 1004 xảy ra khi macro bạn đang chạy sao chép trang tính gốc vào sổ làm việc có tên đã xác định mà bạn không lưu và đóng trước khi chạy macro. Bạn có thể xem ví dụ về macro như vậy trong đoạn mã sau:

Sub CopySheetTest()
    Dim iTemp As Integer
    Dim oBook As Workbook
    Dim iCounter As Integer
    
    ' Create a new blank workbook:
    iTemp = Application.SheetsInNewWorkbook
    Application.SheetsInNewWorkbook = 1
    Set oBook = Application.Workbooks.Add
    Application.SheetsInNewWorkbook = iTemp
    
    ' Add a defined name to the workbook
    ' that RefersTo a range:
    oBook.Names.Add Name:="tempRange", _
        RefersTo:="=Sheet1!$A$1"
            
    ' Save the workbook:
    oBook.SaveAs "c:\test2.xls"
    
    ' Copy the sheet in a loop. Eventually,
    ' you get error 1004: Copy Method of
    ' Worksheet class failed.
    For iCounter = 1 To 275
        oBook.Worksheets(1).Copy After:=oBook.Worksheets(1)        
    Next
End Sub

Vì nguyên nhân của lỗi Run-time 1004 trong ngữ cảnh của Microsoft Excel đã được biết, cũng như cách giải quyết. Ngoài giải pháp cho vấn đề này, những gì cũng có sẵn cho người dùng bị ảnh hưởng bởi nó là một giải pháp có thể được sử dụng trong trường hợp giải pháp không hoạt động hoặc họ không tìm thấy giải pháp là một lựa chọn khả thi.

Giải pháp:

Giải pháp cho vấn đề cụ thể này là chỉ cần chỉnh sửa mã của macro bạn đang chạy để nó lưu và đóng sổ làm việc đích theo định kỳ trong khi nó tạo bản sao của (các) trang tính. Mã cho macro thực hiện điều này sẽ trông giống như sau:

Sub CopySheetTest()
    Dim iTemp As Integer
    Dim oBook As Workbook
    Dim iCounter As Integer
    
    ' Create a new blank workbook:
    iTemp = Application.SheetsInNewWorkbook
    Application.SheetsInNewWorkbook = 1
    Set oBook = Application.Workbooks.Add
    Application.SheetsInNewWorkbook = iTemp
    
    ' Add a defined name to the workbook
    ' that RefersTo a range:
    oBook.Names.Add Name:="tempRange", _
        RefersTo:="=Sheet1!$A$1"
            
    ' Save the workbook:
    oBook.SaveAs "c:\test2.xls"
    
    ' Copy the sheet in a loop. Eventually,
    ' you get error 1004: Copy Method of
    ' Worksheet class failed.
    For iCounter = 1 To 275
        oBook.Worksheets(1).Copy After:=oBook.Worksheets(1)
        'Uncomment this code for the workaround:
        'Save, close, and reopen after every 100 iterations:
        If iCounter Mod 100 = 0 Then
            oBook.Close SaveChanges:=True
            Set oBook = Nothing
            Set oBook = Application.Workbooks.Open("c:\test2.xls")
        End If
    Next
End Sub

Lưu ý: Số lần chính xác bạn có thể sao chép trang tính trước khi cần lưu và đóng sổ làm việc mà các bản sao đang được lưu thay đổi tùy theo từng trường hợp vì nó phụ thuộc vào kích thước của trang tính mà bạn đang tạo bản sao.

Giải pháp:

Như đã nêu trước đây, một giải pháp cho vấn đề cụ thể này cũng tồn tại. Giải quyết vấn đề này là một vấn đề đơn giản là chèn một trang tính mới từ một mẫu thay vì tạo một bản sao của một trang tính hiện có. Nếu bạn muốn giải quyết vấn đề này, đây là những gì bạn cần làm:

  1. Khởi chạy Excel .
  2. Tạo một sổ làm việc mới và xóa mỗi trang tính mà sổ làm việc chứa lưu cho một trang tính. Cách sửa lỗi thời gian chạy 1004 trong Excel
  3. Định dạng sổ làm việc.
  4. Theo mặc định, thêm bất kỳ văn bản, dữ liệu và / hoặc biểu đồ nào bạn muốn có trong mẫu vào trang tính duy nhất mà sổ làm việc hiện có.
  5. Nếu bạn đang sử dụng Excel 2003 trở xuống, hãy nhấp vào Tệp > Lưu dưới dạng . Mặt khác, nếu bạn đang sử dụng Excel 2007 trở lên, hãy nhấp vào Microsoft Office và sau đó nhấp vào Lưu dưới dạng . Cách sửa lỗi thời gian chạy 1004 trong Excel
  6. Trong Tên tệp : , hãy nhập bất cứ thứ gì bạn muốn gọi mẫu.
  7. Mở trình đơn thả xuống bên cạnh Lưu dưới dạng: và nhấp vào Excel Mẫu (.xlt) nếu bạn đang sử dụng Excel 2003 trở về trước hoặc Excel Mẫu (.xltx) nếu bạn đang sử dụng Excel 2007 trở lên để chọn nó. Cách sửa lỗi thời gian chạy 1004 trong Excel
  8. Nhấp vào Lưu . Cách sửa lỗi thời gian chạy 1004 trong Excel
  9. Khi bạn đã tạo thành công mẫu, bạn có thể chèn mẫu theo chương trình bằng cách sử dụng dòng mã sau:
    Sheets.Add Type:= path \ tên tệp

Lưu ý: Trong dòng mã được mô tả ở trên, đường dẫn \ tên tệp cần được thay thế bằng đường dẫn đầy đủ (bao gồm tên tệp hoàn chỉnh) cho vị trí của mẫu trang tính bạn vừa tạo.