Jak naprawić błąd czasu wykonania 1004 w programie Excel

Błąd wykonania 1004 to kod błędu dotyczący programu Microsoft Visual Basic, o którym wiadomo, że wpływa na użytkowników programu Microsoft Excel. Ten błąd występuje najczęściej w programach Excel 2003 i Excel 2007, chociaż żadna wersja popularnej aplikacji Microsoft Arkusz na komputery nie jest bezpieczna przed zagrożeniem, jakim jest błąd 1004 w czasie wykonywania. W większości przypadków użytkownicy dotknięci tym problemem widzą jeden z dwie różne odmiany błędu czasu wykonania 1004. W całości dwie odmiany błędu czasu wykonania 1004 brzmią:

Błąd wykonania„ 1004 ”:

Błąd metody kopiowania klasy arkusza roboczego ”

Błąd wykonania„ 1004 ”:

Błąd zdefiniowany przez aplikację lub obiekt ”

Dokładny komunikat o błędzie może się również nieznacznie różnić, w kilku przypadkach, chociaż kod błędu pozostanie taki sam. Niezależnie od tego, która wersja problemu występuje, prawie zawsze występuje podczas uruchamiania makra w programie Excel, które jest przeznaczone do kopiowania arkuszy roboczych, a następnie umieszczania kopii w tym samym skoroszycie, co oryginalny arkusz roboczy.

W przeciwieństwie do najgorszych problemów technicznych, znana jest przyczyna błędu 1004 w czasie wykonywania w programie Microsoft Excel. Błąd wykonania 1004 występuje, gdy uruchomione makro kopiuje oryginalny arkusz do skoroszytu o zdefiniowanej nazwie, której nie zapisałeś i nie zamknąłeś przed uruchomieniem makra. Przykład takiego makra można zobaczyć w następującym kodzie:

 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 

Ponieważ znana jest przyczyna błędu czasu wykonania 1004 w kontekście programu Microsoft Excel, podobnie jak rozdzielczość. Oprócz rozwiązania tego problemu dla użytkowników, których dotyczy ten problem, dostępne jest również obejście, którego można użyć w przypadku, gdy rozwiązanie nie działa lub nie uważają, że jest to opłacalna opcja.

Rozwiązanie:

Rozwiązaniem tego konkretnego problemu jest po prostu edycja kodu uruchomionego makra, aby okresowo zapisywać i zamykać docelowy skoroszyt podczas tworzenia kopii arkusza (arkuszy). Kod makra, który to robi, wyglądałby podobnie do następującego:

 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 

Uwaga: Dokładna liczba kopii arkusza roboczego, zanim trzeba zapisać i zamknąć skoroszyt, w którym zapisywane są kopie, różni się w zależności od przypadku, ponieważ zależy to od rozmiaru arkusza, którego kopię wykonuje się.

Obejście:

Jak wspomniano wcześniej, istnieje również obejście tego konkretnego problemu. Obejście tego problemu polega na wstawieniu nowego arkusza z szablonu zamiast tworzenia kopii istniejącego arkusza. Jeśli chcesz obejść ten problem, oto, co musisz zrobić:

  1. Uruchom program Excel .
  2. Utwórz nowy skoroszyt i usuń każdy pojedynczy arkusz, który zawiera skoroszyt.

  3. Sformatuj skoroszyt.
  4. Dodaj dowolny tekst, dane i / lub wykresy, które chcesz domyślnie mieć w szablonie, do jedynego arkusza roboczego, który teraz zawiera skoroszyt.
  5. Jeśli korzystasz z programu Excel 2003 lub wcześniejszego, kliknij opcję Plik > Zapisz jako . Jeśli używasz programu Excel 2007 lub nowszego, z drugiej strony kliknij przycisk Microsoft Office, a następnie kliknij Zapisz jako .

  6. W polu Nazwa pliku : wpisz dowolną nazwę szablonu.
  7. Otwórz menu rozwijane obok pola Zapisz jako typ: i kliknij Szablon Excel (.xlt), jeśli używasz programu Excel 2003 lub wcześniejszego, lub Szablon Excel (.xltx), jeśli używasz programu Excel 2007 lub nowszego, aby go wybrać.

  8. Kliknij Zapisz .

  9. Po pomyślnym utworzeniu szablonu możesz wstawić go programowo, używając następującego wiersza kodu:

    Sheets.Add Type: = ścieżka \ nazwa pliku

Uwaga: W wierszu kodu opisanym powyżej ścieżka \ nazwa_pliku musi zostać zastąpiona pełną ścieżką (łącznie z pełną nazwą pliku) dla lokalizacji właśnie utworzonego szablonu arkusza.

Ciekawe Artykuły