Guider

Hvordan fikse kjøretidsfeil 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. Feilen er kjent for å være mest utbredt på Excel 2003 og Excel 2007, selv om ingen versjoner av Microsofts populære regnearkapplikasjon for datamaskiner er trygge for trusselen som er Run-time error 1004. I de fleste tilfeller ser brukere som er berørt av dette problemet en to forskjellige varianter av kjøretidfeil 1004. I sin helhet leser de to variantene av kjøretidfeil 1004:

Kjøretidsfeil ‘1004’:

Kopimetoden for regnearkklassen mislyktes

Kjøretidsfeil ‘1004’:

Applikasjonsdefinert eller objektdefinert feil

Den nøyaktige feilmeldingen du ser kan også variere litt, i noen få tilfeller, selv om feilkoden vil være den samme. Uansett hvilken versjon av problemet du opplever, skjer det imidlertid nesten alltid når du kjører en makro i Excel som er designet for å kopiere regneark og deretter plassere kopiene i samme arbeidsbok som det opprinnelige regnearket.

I motsetning til de verste tekniske problemene der ute, er årsaken til Run-time error 1004 i Microsoft Excel kjent. Kjøretidsfeil 1004 oppstår når makroen du kjører kopierer det opprinnelige 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 Som Heltall Dim oBook Som Arbeidsbok Dim iCounter Som Heltall 'Lag en ny tom arbeidsbok: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Sett oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp' Legg til en definert navn til arbeidsboken 'som refererer til et område: oBook.Names.Add Name: = "tempRange", _ RefersTo: = "= Sheet1! $ A $ 1"' Lagre arbeidsboken: oBook.SaveAs "c: \ test2.xls" 'Kopier arket i en løkke. Til slutt får du feil 1004: Kopimetode for regnearkklassen mislyktes. For iCounter = 1 til 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 også 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 å lagre den og lukke målarbeidsboken med jevne mellomrom mens den lager kopier av regnearket / arkene. Koden for en makro som gjør dette, vil se noe ut som følgende:

Sub CopySheetTest () Dim iTemp Som Integer Dim oBook Som Workbook Dim iCounter Som Integer 'Lag en ny tom arbeidsbok: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Sett oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp' Legg til en definert navn til arbeidsboken 'som refererer til et område: oBook.Names.Add Name: = "tempRange", _ RefersTo: = "= Sheet1! $ A $ 1"' Lagre arbeidsboken: oBook.SaveAs "c: \ test2.xls" 'Kopier arket i en løkke. Til slutt får du feil 1004: Kopimetode for regnearkklassen mislyktes. For iCounter = 1 til 275 oBook.Worksheets (1) .Copy After: = oBook.Worksheets (1) 'Fjern kommentar til denne koden for løsningen:' Lagre, lukk og åpne igjen etter hver 100 iterasjoner: Hvis iCounter Mod 100 = 0 Da oBook.Close SaveChanges: = True Set oBook = Nothing Set oBook = Application.Workbooks.Open ("c: \ test2.xls") Slutt hvis neste slutt Sub

Merk: Det nøyaktige antall ganger du kan kopiere et regneark før du trenger å lagre og lukke arbeidsboken kopiene blir lagret til, varierer fra sak til sak, da 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 løse dette problemet, er det du trenger å gjøre:

  1. Startutmerke.
  2. Lag en ny arbeidsbok, ogsletthvert regneark arbeidsboken inneholder lagre for ett.
  3. Formatarbeidsboken.
  4. Legg til tekst, data og / eller diagrammer du ønsker å ha i malen som standard til det eneste regnearket arbeidsboken nå inneholder.
  5. Hvis du bruker Excel 2003 eller tidligere, klikker du påFilLagre som. Hvis du bruker Excel 2007 eller senere, klikker du påMicrosoft Officeog klikk deretter påLagre som.
  6. IFilnavn: felt, skriv inn hva du vil at malen skal hete.
  7. Åpne rullegardinmenyen ved siden avLagre som type: felt og klikk påutmerkeMal (.xlt) hvis du bruker Excel 2003 eller tidligere, ellerutmerkeMal (.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: =sti\filnavn

Merk: I kodelinjen beskrevet ovenfor,sti \ filnavn må erstattes med hele banen (inkludert hele filnavnet) for plasseringen av arkmalen du nettopp har opprettet.