Ako opraviť chybu runtime 1004 v Exceli

Chyba za behu 1004 je kód chyby týkajúci sa programu Microsoft Visual Basic, o ktorom je známe, že ovplyvňuje používateľov programu Microsoft Excel. O tejto chybe je známe, že je najčastejšou v programoch Excel 2003 a Excel 2007, aj keď žiadna verzia populárnej aplikácie pre pracovné hárky spoločnosti Microsoft pre počítače nie je bezpečná pred hrozbou, ktorá je chyba pri spustení 1004. Vo väčšine prípadov používatelia, ktorých sa tento problém týka, vidia jednu z dve rôzne variácie chyby run-time 1004. Celkovo sa tieto dve variácie chyby run-time 1004 čítali:

Chyba pri spustení '1004':

Metóda kopírovania triedy pracovného listu zlyhala. “

Chyba pri spustení '1004':

Chyba definovaná aplikáciou alebo objektom. “

Presné chybové hlásenie, ktoré vidíte, sa môže v niektorých prípadoch mierne líšiť, hoci kód chyby zostane rovnaký. Bez ohľadu na to, ktorú verziu problému máte, takmer vždy sa vyskytne pri spustení makra v programe Excel, ktoré je určené na kopírovanie pracovných hárkov a potom ich umiestňovanie do rovnakého zošita ako pôvodný pracovný hárok.

Na rozdiel od najhorších technických problémov tam, je príčina chyby run-time 1004 v programe Microsoft Excel známa. Chyba spustenia 1004 sa vyskytuje, keď makro, ktoré používate, kopíruje pôvodný pracovný hárok do zošita s definovaným názvom, ktorý ste neuložili a zavreli pred spustením makra. Príklad takéhoto makra je uvedený v nasledujúcom kóde:

 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 

Pretože je známa príčina chyby run-time 1004 v kontexte programu Microsoft Excel, je aj rozlíšenie. Okrem riešenia tohto problému je k dispozícii aj používateľom, ktorých sa to týka, aj riešenie, ktoré sa môže použiť v prípade, že riešenie nefunguje alebo ho nenájde ako uskutočniteľné riešenie.

Riešenie:

Riešením tohto špecifického problému je jednoducho upraviť kód makra, ktoré práve používate, aby ho pravidelne ukladal a zavrel cieľový zošit, zatiaľ čo vytvára kópie pracovných hárkov. Kód makra, ktorý to urobí, bude vyzerať nasledovne:

 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: Presný počet kópií pracovného hárka pred uložením a zatvorením zošita, do ktorého sa ukladajú kópie, sa v jednotlivých prípadoch líši, pretože to závisí od veľkosti pracovného hárka, z ktorého kopírujete.

Riešenie:

Ako už bolo uvedené, existuje aj riešenie tohto špecifického problému. Riešenie tohto problému je jednoduchou záležitosťou vloženia nového pracovného hárka zo šablóny namiesto vytvorenia kópie existujúceho pracovného hárka. Ak by ste chceli tento problém vyriešiť, musíte urobiť nasledujúce kroky:

  1. Spustite program Excel .
  2. Vytvorte nový zošit a vymažte každý jednotlivý hárok, ktorý sašit obsahuje.

  3. Naformátujte zošit.
  4. Text, údaje a / alebo grafy, ktoré chcete mať v šablóne, pridajte v predvolenom nastavení do jediného pracovného listu, ktorý pracovný zošit teraz obsahuje.
  5. Ak používate Excel 2003 alebo starší, kliknite na Súbor > Uložiť ako . Ak používate program Excel 2007 alebo novší, na druhej strane kliknite na tlačidlo Microsoft Office a potom na Uložiť ako .

  6. Do poľa Názov súboru : zadajte, čo sa má volať šablóna.
  7. Otvorte rozbaľovaciu ponuku vedľa poľa Uložiť ako typ: a kliknite na Šablónu Excel (.xlt), ak používate Excel 2003 alebo starší, alebo Šablónu Excel (.xltx), ak používate Excel 2007 alebo novšiu.

  8. Kliknite na Uložiť .

  9. Po úspešnom vytvorení šablóny ju môžete vložiť programovo pomocou nasledujúceho riadku kódu:

    Sheets.Add Type: = path \ filename

Poznámka: V riadku kódu opísanom vyššie musí byť cesta \ filename nahradená úplnou cestou (vrátane úplného názvu súboru) pre umiestnenie šablóny listu, ktorú ste práve vytvorili.

Zaujímavé Články