Jak opravit chybu runtime 1004 v Excelu

Chyba za běhu 1004 je kód chyby týkající se jazyka Microsoft Visual Basic, o kterém bylo známo, že ovlivňuje uživatele aplikace Microsoft Excel. O této chybě je známo, že je nejčastější v Excelu 2003 a Excelu 2007, ačkoli žádná verze oblíbené aplikace Microsoft List pro počítače není bezpečná před hrozbou, která je chyba runtime 1004. Ve většině případů uživatelé, kterých se tento problém týká, vidí jednu z dvě různé varianty chyby run-time 1004. Celkově dvě varianty chyby run-time 1004 čtou:

Chyba při běhu '1004':

Metoda kopírování třídy listu se nezdařila. “

Chyba při běhu '1004':

Chyba definovaná aplikací nebo objektem “

Přesná chybová zpráva se může v některých případech mírně lišit, přestože kód chyby zůstane stejný. Bez ohledu na verzi problému, se kterou se setkáte, se však téměř vždy vyskytne při spuštění makra v Excelu, které je určeno ke kopírování listů a poté je umístěte do stejného sešitu jako původní list.

Na rozdíl od nejhorších technických problémů tam, je známa chyba runtime 1004 v aplikaci Microsoft Excel. Chyba spuštění 1004 dochází, když spuštěné makro kopíruje původní list do sešitu s definovaným názvem, který jste neuložili a zavřete před spuštěním makra. Příklad takového makra je vidět v následujícím kódu:

 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 

Protože je známa příčina chyby run-time 1004 v kontextu aplikace Microsoft Excel, stejně jako rozlišení. Kromě řešení tohoto problému je k dispozici také uživatelům, kterých se to týká, řešení, které lze použít v případě, že řešení nefunguje nebo nenajdou řešení jako schůdnou možnost.

Řešení:

Řešením tohoto specifického problému je jednoduše upravit kód makra, které právě používáte, a pravidelně jej ukládat a zavírat cílový sešit, zatímco vytváří kopie listů. Kód makra, který to provede, bude vypadat podobně jako v následujících řádcích:

 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 

Poznámka: Přesný počet kopií listu před uložením a zavřením sešitu, ve kterém jsou kopie ukládány, se v jednotlivých případech liší, záleží to na velikosti listu, ze kterého kopírujete.

Řešení:

Jak bylo uvedeno výše, existuje i řešení tohoto konkrétního problému. Řešení tohoto problému je jednoduchou záležitostí vložení nového listu ze šablony místo vytvoření kopie existujícího listu. Pokud byste chtěli tento problém vyřešit, je třeba udělat následující kroky:

  1. Spusťte Excel .
  2. Vytvořte nový sešit a odstraňte každý jednotlivý list, který sešit obsahuje.

  3. Naformátujte sešit.
  4. Přidat libovolný text, data nebo grafy, které chcete mít v šabloně ve výchozím nastavení, na jediný list, který sešit nyní obsahuje.
  5. Pokud používáte Excel 2003 nebo starší, klikněte na Soubor > Uložit jako . Pokud používáte Excel 2007 nebo novější, na druhé straně klikněte na tlačítko Microsoft Office a poté na Uložit jako .

  6. Do pole Název souboru : zadejte co chcete, aby byla šablona volána.
  7. Otevřete rozbalovací nabídku vedle pole Uložit jako typ: a klikněte na Šablonu Excel (.xlt), pokud používáte Excel 2003 nebo starší, nebo Šablonu Excel (.xltx), pokud používáte Excel 2007 nebo novější.

  8. Klikněte na Uložit .

  9. Po úspěšném vytvoření šablony ji můžete vložit programově pomocí následujícího řádku kódu:

    Sheets.Add Type: = path \ filename

Poznámka: V řádku výše popsaného kódu musí být cesta \ filename nahrazena úplnou cestou (včetně úplného názvu souboru) pro umístění šablony listu, kterou jste právě vytvořili.

Zajímavé Články