Cách khắc phục lỗi thời gian chạy 1004 trong Excel

Lỗi thời gian chạy 1004 là 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 nào của ứng dụng bảng tính phổ biến của Microsoft cho máy tính an toàn với mối đe dọa đó là lỗi thời gian chạy 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 đều thấy một trong những hai biến thể khác nhau của lỗi thời gian chạy 1004. Trong toàn bộ, hai biến thể của lỗi thời gian chạy 1004 đọc:

Lỗi thời gian chạy của '1004':

Phương pháp sao chép của lớp Worksheet thất bại

Lỗi thời gian chạy của '1004':

Lỗi định nghĩa ứng dụng hoặc xác định đối tượng

Thông báo lỗi chính xác mà bạn thấy cũng có thể thay đổi đôi chút, trong một số trường hợp, mặc dù mã lỗi sẽ giữ nguyên. Tuy nhiên, bất kể bạn gặp phải phiên bản nào của sự cố, 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ư bảng tính gốc.

Không giống như các sự cố công nghệ tồi tệ nhất hiện nay, nguyên nhân gây ra lỗi thời gian chạy 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 đang sao chép trang tính gốc vào sổ làm việc với tên được xác định mà bạn không lưu và đóng trước khi bạn chạy macro. Một ví dụ về macro như vậy có thể được nhìn thấ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 gây ra lỗi thời gian chạy 1004 trong ngữ cảnh của Microsoft Excel đã được biết đến, cũng như độ phân giải. 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 cách giải quyết 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 để lưu định kỳ và đóng sổ làm việc đích trong khi nó tạo các bản sao của bảng tính. Mã cho một macro thực hiện điều này sẽ trông giống như các dòng 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 một bảng tính trước khi bạn cần lưu và đóng sổ làm việc, các bản sao đang được lưu để thay đổi từ trường hợp này sang trường hợp khác vì nó phụ thuộc vào kích thước của bảng tính bạn đang tạo.

Cách giải quyết:

Như đã nêu trước đây, một cách giải quyết 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 bảng tính mới từ một mẫu thay vì tạo một bản sao của một bảng 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 từng bảng tính mà sổ làm việc chứa lưu cho một.

  3. Định dạng sổ làm việc.
  4. 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 theo mặc định vào bảng 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ở về trước, hãy nhấp vào Tệp > Lưu dưới dạng . Nếu bạn đang sử dụng Excel 2007 trở lên, mặt khác, nhấp vào nút Microsoft Office và sau đó nhấp vào Lưu dưới dạng .

  6. Trong trường Tên tệp : nhập vào bất cứ thứ gì bạn muốn mẫu được gọi.
  7. Mở menu thả xuống bên cạnh trường Lưu dưới dạng: và nhấp vào Mẫu Excel (.xlt) nếu bạn đang sử dụng Excel 2003 trở về trước hoặc Mẫu Excel (.xltx) nếu bạn đang sử dụng Excel 2007 trở lên để chọn.

  8. Bấm vào Lưu .

  9. Khi bạn đã tạo thành công mẫu, bạn có thể chèn nó theo chương trình bằng cách sử dụng dòng mã sau:

    Sheets.Add Type: = path \ filename

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 đầy đủ) cho vị trí của mẫu trang tính bạn vừa tạo.

Bài ViếT Thú Vị