Slik løser du kjøretidfeil 1004 i Excel

Kjøretidsfeil 1004 er en feilkode knyttet til Microsoft Visual Basic som har vært kjent for å påvirke Microsoft Excel-brukere. Det er kjent at feilen er mest utbredt på Excel 2003 og Excel 2007, selv om ingen versjon av Microsofts populære regnearkapplikasjon for datamaskiner er sikker fra trusselen som er kjøretidsfeil 1004. I de fleste tilfeller ser brukere som er berørt av dette problemet en av to forskjellige varianter av kjøretidsfeil 1004. I sin helhet leste de to variantene av kjøretidsfeil 1004:

Kjørtidsfeil '1004':

Kopieringsmetode for regnearksklasse mislyktes ”

Kjørtidsfeil '1004':

Applikasjonsdefinert eller objektdefinert feil ”

Den eksakte feilmeldingen du ser kan også variere litt, i noen få tilfeller, selv om feilkoden forblir den samme. Uansett hvilken versjon av problemet du opplever, forekommer det imidlertid nesten alltid mens du kjører en makro i Excel som er designet for å kopiere arbeidsark og deretter plassere kopiene i samme arbeidsbok som det originale regnearket.

I motsetning til de verste teknologiske problemene der ute, er årsaken til kjøretidsfeil 1004 i Microsoft Excel kjent. Kjørtidsfeil 1004 oppstår når makroen du kjører kopierer det originale regnearket til en arbeidsbok med et definert navn som du ikke lagret og lukket før du kjørte makroen. Et eksempel på en slik makro kan sees 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 

Siden årsaken til kjøretidsfeil 1004 i sammenheng med Microsoft Excel er kjent, er det også oppløsningen. I tillegg til en løsning på dette problemet, er det som også er tilgjengelig for brukere som er berørt av det, en løsning som kan brukes i tilfelle løsningen ikke fungerer, eller de ikke finner løsningen å være et levedyktig alternativ.

Løsningen:

Løsningen på dette spesifikke problemet er å bare redigere koden til makroen du kjører for å få den til å lagre og lukke målarbeidsboken med jevne mellomrom mens den lager kopier av regnearket. Koden for en makro som gjør dette, ser noe ut på følgende måte:

 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 

Merk: Det nøyaktige antall ganger du kan kopiere et regneark før du trenger å lagre og lukke arbeidsboken kopiene lagres i, varierer fra sak til sak, ettersom det avhenger av størrelsen på regnearket du lager kopier av.

Løsningen:

Som nevnt tidligere, finnes det også en løsning på dette spesifikke problemet. Å jobbe rundt dette problemet er en enkel sak å sette inn et nytt regneark fra en mal i stedet for å lage en kopi av et eksisterende regneark. Hvis du vil jobbe rundt dette problemet, er det du trenger å gjøre:

  1. Start Excel .
  2. Lag en ny arbeidsbok, og slett hvert arbeidsark arbeidsboka inneholder lagre for en.

  3. Formater arbeidsboken.
  4. Legg til tekst, data og / eller diagrammer du ønsker å ha i malen som standard til det eneste arbeidsarket arbeidsboka nå inneholder.
  5. Hvis du bruker Excel 2003 eller tidligere, klikker du på Fil > Lagre som . Hvis du bruker Excel 2007 eller nyere, på den annen side, klikker du på Microsoft Office- knappen og klikker deretter Lagre som .

  6. Skriv inn hva du vil at malen skal hete i feltet Filnavn :.
  7. Åpne rullegardinmenyen ved siden av Lagre som type: -feltet, og klikk på Excel Template (.xlt) hvis du bruker Excel 2003 eller tidligere, eller Excel Template (.xltx) hvis du bruker Excel 2007 eller senere for å velge det.

  8. Klikk på Lagre .

  9. Når du har opprettet malen, kan du sette den inn programmatisk ved å bruke følgende kodelinje:

    Ark. Legg til type: = bane \ filnavn

Merk: I kodelinjen som er beskrevet ovenfor, må banen \ filnavnet erstattes med den fullstendige banen (inkludert det komplette filnavnet) for plasseringen til arkmalen du nettopp har opprettet.

Interessante Artikler