Sådan rettes løbetid Fejl 1004 i Excel

Kørselsfejl 1004 er en fejlkode, der vedrører Microsoft Visual Basic, der har været kendt for at påvirke Microsoft Excel-brugere. Det er kendt, at fejlen er mest udbredt på Excel 2003 og Excel 2007, skønt ingen version af Microsofts populære regnearksprogram til computere er sikker fra den trussel, der er Kørselsfejl 1004. I de fleste tilfælde ser brugere, der er berørt af dette problem, en af to forskellige variationer af Run-time-fejl 1004. I deres helhed læser de to variationer af Run-time-fejl 1004:

Kørselsfejl '1004':

Kopimetode for regnearksklasse mislykkedes ”

Kørselsfejl '1004':

Applikationsdefineret eller objektdefineret fejl ”

Den nøjagtige fejlmeddelelse, du ser, kan også variere en smule i nogle få tilfælde, selvom fejlkoden forbliver den samme. Uanset hvilken version af problemet du oplever, forekommer det imidlertid næsten altid, mens du kører en makro i Excel, der er designet til at kopiere regneark og derefter placere kopierne i den samme projektmappe som det originale regneark.

I modsætning til de værste tekniske problemer derude, kendes årsagen til Run-time-fejl 1004 i Microsoft Excel. Kørselsfejl 1004 opstår, når den makro, du kører, kopierer det originale regneark til en projektmappe med et defineret navn, som du ikke gemte og lukker, før du kørte makroen. Et eksempel på en sådan makro kan ses i følgende kode:

 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 

Da årsagen til runtime-fejl 1004 i forbindelse med Microsoft Excel er kendt, og det er også opløsningen. Ud over en løsning på dette problem er det, der også er tilgængeligt for brugere, der er berørt af det, en løsning, der kan bruges i tilfælde af, at løsningen ikke fungerer, eller de ikke finder, at løsningen er en levedygtig mulighed.

Løsningen:

Løsningen på dette specifikke problem er simpelthen at redigere koden til den makro, du kører, for at få den periodisk til at gemme og lukke målarbejdsbogen, mens den laver kopier af regnearket. Koden for en makro, der gør dette, ser noget ud på følgende må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) '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 

Bemærk: Det nøjagtige antal gange, du kan kopiere et regneark, før du skal gemme og lukke projektmappen, som kopierne gemmes i, varierer fra et tilfælde til det næste, da det afhænger af størrelsen på det regneark, du laver kopier af.

Løsningen:

Som nævnt tidligere findes der en løsning på dette specifikke problem. At arbejde omkring dette problem er et simpelt spørgsmål om at indsætte et nyt regneark fra en skabelon i stedet for at oprette en kopi af et eksisterende regneark. Hvis du gerne vil løse dette problem, er det her, du skal gøre:

  1. Start Excel .
  2. Opret en ny projektmappe, og slet hvert enkelt regneark, som projektmappen indeholder, gemt for en.

  3. Formater arbejdsbogen.
  4. Tilføj tekst, data og / eller diagrammer, du ønsker at have i skabelonen som standard, til det eneste regneark, som projektmappen nu indeholder.
  5. Hvis du bruger Excel 2003 eller tidligere, skal du klikke på Fil > Gem som . Hvis du bruger Excel 2007 eller nyere, skal du på den anden side klikke på Microsoft Office- knappen og derefter klikke på Gem som .

  6. I feltet Filnavn : indtast hvad du vil, skabelonen skal kaldes.
  7. Åbn rullemenuen ved siden af ​​feltet Gem som type :, og klik på Excel- skabelon (.xlt), hvis du bruger Excel 2003 eller tidligere, eller Excel- skabelon (.xltx), hvis du bruger Excel 2007 eller senere til at vælge det.

  8. Klik på Gem .

  9. Når du har oprettet skabelonen med succes, kan du indsætte den programmatisk ved hjælp af følgende kodelinje:

    Ark.Tilføj type: = sti \ filnavn

Bemærk: I den kodelinje, der er beskrevet ovenfor, skal sti \ filnavn erstattes med den fulde sti (inklusive det komplette filnavn) for placeringen af ​​den arkskabelon, du lige har oprettet.

Interessante Artikler