Hur man fixar körtidfel 1004 i Excel

Körningsfel 1004 är en felkod för Microsoft Visual Basic som har varit känt för att påverka Microsoft Excel-användare. Det är känt att felet är vanligast på Excel 2003 och Excel 2007, även om ingen version av Microsofts populära kalkylprogram för datorer är säkert från hotet som är körfel 1004. I de flesta fall ser användare som drabbas av detta problem en av två olika varianter av körtidfel 1004. I sin helhet läser de två variationerna av körtidsfel 1004:

Run-time error '1004':

Kopieringsmetod för kalkylbladet misslyckades ”

Run-time error '1004':

Programdefinierat eller objektdefinierat fel ”

Det exakta felmeddelandet du ser kan också variera något, i några fall, även om felkoden förblir densamma. Oavsett vilken version av problemet du upplever uppstår det dock nästan alltid när du kör ett makro i Excel som är utformat för att kopiera kalkylblad och sedan placera kopiorna i samma arbetsbok som det ursprungliga kalkylbladet.

Till skillnad från de värsta tekniska problemen där ute, är orsaken till körningsfel 1004 inom Microsoft Excel känd. Runtidfel 1004 inträffar när det makro du kör kopierar det ursprungliga kalkylbladet till en arbetsbok med ett definierat namn som du inte sparat och stängde innan du körde makroen. Ett exempel på en sådan makro kan ses i följande kod:

 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 

Eftersom orsaken till körningsfel 1004 i samband med Microsoft Excel är känd, liksom upplösningen. Förutom en lösning på det här problemet, är det som också finns tillgängligt för användare som påverkas av det en lösning som kan användas i händelse av att lösningen inte fungerar eller de inte hittar lösningen som ett genomförbart alternativ.

Lösningen:

Lösningen på detta specifika problem är att helt enkelt redigera koden för den makro som du kör för att den periodvis ska spara och stänga målarbetsboken medan den gör kopior av kalkylbladet. Koden för ett makro som gör det här ser ut något enligt följande:

 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 

Obs! Det exakta antalet gånger du kan kopiera ett kalkylblad innan du behöver spara och stänga arbetsboken som kopiorna sparas på varierar från fall till fall eftersom det beror på storleken på kalkylbladet du kopierar.

Lösningen:

Som tidigare nämnts finns det också en lösning på detta specifika problem. Att arbeta runt det här problemet är en enkel fråga om att infoga ett nytt kalkylblad från en mall istället för att skapa en kopia av ett befintligt kalkylblad. Om du vill arbeta med det här problemet är det du behöver göra:

  1. Starta Excel .
  2. Skapa en ny arbetsbok och ta bort varje arbetsblad som arbetsboken innehåller spara för en.

  3. Formatera arbetsboken.
  4. Lägg till text, data och / eller diagram som du vill ha i mallen som standard till det enda kalkylbladet som arbetsboken nu innehåller.
  5. Om du använder Excel 2003 eller tidigare klickar du på Arkiv > Spara som . Om du använder Excel 2007 eller senare, å andra sidan, klicka på Microsoft Office- knappen och klicka sedan på Spara som .

  6. I fältet Filnamn : skriv in vad du vill att mallen ska kallas.
  7. Öppna rullgardinsmenyn bredvid fältet Spara som typ: och klicka på Excel- mall (.xlt) om du använder Excel 2003 eller tidigare, eller Excel- mall (.xltx) om du använder Excel 2007 eller senare för att välja det.

  8. Klicka på Spara .

  9. När du väl har skapat mallen kan du infoga den programmatiskt genom att använda följande kodrad:

    Ark. Lägg till typ: = sökväg \ filnamn

Obs! I koden som beskrivs ovan måste sökväg \ filnamn ersättas med den fullständiga sökvägen (inklusive hela filnamnet) för platsen för den mall som du just har skapat.

Intressanta Artiklar