Како поправити грешку времена покретања 1004 у програму Екцел

Грешка током покретања 1004 је код грешке који се односи на Мицрософт Висуал Басиц за који се знало да утиче на кориснике Мицрософт Екцел-а. Познато је да је грешка најраширенија у програмима Екцел 2003 и Екцел 2007, мада ниједна верзија Мицрософтове популарне апликације за радни лист за рачунаре није безбедна од претње која представља грешку Рун-тиме 1004. У већини случајева корисници погођени овим проблемом виде једног од две различите варијације грешке покретања 1004. У целости две варијације грешке покретања 1004 гласе:

Грешка у току„ 1004 “:

Начин копирања класе радног листа није успео “

Грешка у току„ 1004 “:

Грешка дефинисана апликацијом или објектом “

Тачна порука о грешци коју такође видите може се незнатно разликовати у неколико случајева, мада ће код грешке остати исти. Без обзира на верзију издања коју имате, међутим, она се скоро увек догађа док покрећете макронаредбу у Екцелу која је дизајнирана за копирање радних листова и затим постављање копија у исту радну књигу као и оригинални радни лист.

За разлику од најгорих технолошких проблема тамо, познат је узрок грешке покретања 1004 у програму Мицрософт Екцел. Грешка при покретању 1004 појављује се када макронаредба коју покрећете копира оригинални радни лист у радну књигу са дефинисаним именом које нисте спремили и затворите пре него што покренете макро. Пример таквог макроа може се видети у следећем коду:

 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 

Пошто је узрок грешке покретања 1004 у контексту Мицрософт Екцел познат, као и резолуција. Поред решења за ово питање, оно што је такође доступно корисницима који су на њега погођени је решење које може да се користи у случају да решење не функционише или ако сматрају да решење није одржива опција.

Раствор:

Решење овог специфичног проблема је једноставно уређивање кода макронаредбе коју покрећете како бисте га периодично спремали и затварали циљну радну књижицу, док прави копије радног листа (е). Код за макронаредбу која ово ради изгледао би нешто према следећем:

 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 

Напомена: Тачан број копија копирања радног листа пре него што требате да сачувате и затворите радну књижицу, копије се спремају да варирају од једног до другог случаја, јер то зависи од величине радног листа за који правите копије.

Решавање:

Као што је претходно речено, постоји и решење за овај специфични проблем. Решавање овог проблема је једноставна ствар уметања новог радног листа из шаблона уместо стварања копије постојећег радног листа. Ако желите да решите овај проблем, ево шта треба да урадите:

  1. Покрените Екцел .
  2. Креирајте нову радну књижицу и избришите сваки појединачни радни лист који садржи спремање за један.

  3. Форматирајте радну књигу.
  4. Додајте било који текст, податке и / или графиконе које у предлошку желите да задрже у једини образац који сада садржи радна свеска.
  5. Ако користите Екцел 2003 или старије, кликните на Филе > Саве Ас . Ако користите Екцел 2007 или новију верзију, с друге стране, кликните на дугме Мицрософт Оффице и затим кликните на Спреми као .

  6. У поље Име датотеке : унесите све што желите да се предложак позива.
  7. Отворите падајући мени поред поља Саве ас типе: Спреми као и кликните на Екцел Темплате (.клт) ако користите Екцел 2003 или старији, или Екцел Темплате (.клтк) ако користите Екцел 2007 или новији да бисте га изабрали.

  8. Кликните на Спреми .

  9. Након што сте успешно креирали образац, можете га програмски уметнути користећи следећу линију кода:

    Схеетс.Адд Типе: = стаза \ назив датотеке

Напомена: У горе описаном коду, путању \ назив датотеке треба заменити потпуном стазом (укључујући целокупно име датотеке) за локацију предлошка листа који сте управо креирали.

Занимљиви Чланци