Průvodci

Jak opravit chybu běhu 1004 v aplikaci Excel

Chyba běhu 1004 je kód chyby týkající se jazyka Microsoft Visual Basic, o kterém je známo, že ovlivňuje uživatele aplikace Microsoft Excel. O této chybě je známo, že je nejrozšířenější v aplikacích Excel 2003 a Excel 2007, ačkoli žádná verze populární aplikace Microsoft pro pracovní listy pro počítače není bezpečná před hrozbou, kterou je chyba běhu 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 za běhu 1004. Dvě varianty chyby za běhu 1004 zní:

Chyba běhu „1004“:

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

Chyba běhu „1004“:

Chyba definovaná aplikací nebo objektem

Přesná chybová zpráva, kterou vidíte, se může v několika případech také mírně lišit, i když chybový kód zůstane stejný. Bez ohledu na to, ve které verzi problému se setkáte, k ní téměř vždy dochází při spuštění makra v aplikaci Excel, které je navrženo ke kopírování listů a následnému umístění kopií do stejného sešitu jako původní list.

Na rozdíl od nejhorších technologických problémů, které jsou k dispozici, je známá příčina chyby běhu 1004 v aplikaci Microsoft Excel. Chyba 1004 při běhu nastane, když spuštěné makro kopíruje původní list do sešitu s definovaným názvem, který jste neuložili a zavřeli před spuštěním makra. Příklad takového makra lze 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' Přidat definovaný název do sešitu ', který RefersTo do rozsahu: oBook.Names.Add Name: = "tempRange", _ RefersTo: = "= List1! $ A $ 1"' Uložit sešit: oBook.SaveAs "c: \ test2.xls" „Zkopírujte list do smyčky. Nakonec „se zobrazí chyba 1004: Metoda kopírování třídy„ List se nezdařila. Pro iCounter = 1 až 275 oBook.Worksheets (1) .Copy After: = oBook.Worksheets (1) Next End Sub

Protože je známa příčina chyby za běhu 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á, alternativní řešení, které lze použít v případě, že řešení nefunguje nebo nenajdou řešení jako životaschopnou možnost.

Řešení:

Řešením tohoto konkrétního problému je jednoduše upravit kód spuštěného makra tak, aby se periodicky ukládal a zavíral cílový sešit, zatímco vytváří kopie listů. Kód makra, které to dělá, by vypadalo nějak takto:

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' Přidat definovaný název do sešitu ', který RefersTo do rozsahu: oBook.Names.Add Name: = "tempRange", _ RefersTo: = "= List1! $ A $ 1"' Uložit sešit: oBook.SaveAs "c: \ test2.xls" „Zkopírujte list do smyčky. Nakonec 'se zobrazí chyba 1004: Metoda kopírování třídy' List se nezdařila. Pro iCounter = 1 až 275 oBook.Worksheets (1). Copy After: = oBook.Worksheets (1) 'Odkomentujte tento kód pro řešení:' Uložit, zavřít a znovu otevřít po každých 100 iteracích: Pokud iCounter Mod 100 = 0 Pak oBook.Close SaveChanges: = True Set oBook = nic není oBook = Application.Workbooks.Open ("c: \ test2.xls") End If Next End Sub

Poznámka: Přesný počet kopií listu, než budete muset uložit a zavřít sešit, do kterého se kopie ukládají, se liší od případu k případu, protože záleží na velikosti listu, ze kterého vytváříte kopie.

Řešení:

Jak již bylo řečeno, řešení tohoto konkrétního problému také existuje. Řešení tohoto problému je jednoduchá záležitost vložení nového listu ze šablony namísto vytvoření kopie existujícího listu. Chcete-li tento problém vyřešit, musíte udělat následující:

  1. ZahájeníVynikat.
  2. Vytvořte nový sešit avymazatkaždý jednotlivý list, který sešit obsahuje, až na jeden.
  3. Formátsešit.
  4. Přidejte text, data a / nebo grafy, které chcete mít v šabloně ve výchozím nastavení, do jediného listu, který sešit nyní obsahuje.
  5. Pokud používáte Excel 2003 nebo starší, klikněte naSouborUložit jako. Pokud používáte Excel 2007 nebo novější, klikněte na ikonuMicrosoft Officetlačítko a poté klikněte naUložit jako.
  6. VNázev souboru: do pole zadejte, jak chcete, aby se šablona volala.
  7. Otevřete rozevírací nabídku vedle položkyUložit jako typ: pole a klikněte naVynikatŠablona (.xlt) pokud používáte Excel 2003 nebo starší, neboVynikatŠablona (.xltx) pokud k jeho výběru používáte Excel 2007 nebo novější.
  8. Klikněte naUložit.
  9. Jakmile úspěšně vytvoříte šablonu, můžete ji programově vložit pomocí následujícího řádku kódu:

    Tabulky. Typ přidání: =cesta\název souboru

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