Hogyan javítsuk ki az 1004 futási idő hibát az Excel programban

Az 1004 futási idő hiba a Microsoft Visual Basicre vonatkozó hibakód, amelyről ismert, hogy a Microsoft Excel felhasználóit érinti. A hiba ismert leginkább az Excel 2003-ban és az Excel 2007-ben, bár a Microsoft népszerű számítógépes munkalap-alkalmazásának egyetlen verziója sem biztonságos a fenyegetéstől, amely a Run-time error 1004. A legtöbb esetben a probléma által érintett felhasználók az egyik az 1004 futási idő hiba két különböző variációja. Az 1004 futási idő hiba két változata teljes egészében a következő:

Futási idő hiba” 1004 ”:

A munkalap osztály másolási módja sikertelen ”

Futási idő hiba” 1004 ”:

Alkalmazás vagy objektum által definiált hiba ”

A pontos hibaüzenet néhány esetben kissé eltérhet, bár a hibakód változatlan marad. Függetlenül attól, hogy a probléma melyik verzióját tapasztalja, szinte mindig előfordul, amikor fut egy makró az Excelben, amelynek célja a munkalapok másolása, majd a másolatok elhelyezése ugyanabba a munkafüzetbe, mint az eredeti munkalap.

A legrosszabb technológiai problémákkal ellentétben a Microsoft Excelben az 1004-es futási hiba oka ismert. Az 1004 futási idő hiba akkor jelentkezik, amikor a futtatott makró az eredeti munkalapot egy meghatározott nevű munkafüzetbe másolja, amelyet nem mentett el, és nem zárt be a makró futtatása előtt. Egy ilyen makróra példa a következő kódban található:

 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 

Mivel a Microsoft Excel összefüggésében az 1004 futásidejű hiba oka, valamint a felbontás is ismert. A probléma megoldása mellett a probléma által érintett felhasználók számára rendelkezésre áll egy megoldás is, amelyet akkor lehet használni, ha a megoldás nem működik, vagy nem találják a megoldást életképes lehetőségnek.

A megoldás:

A probléma megoldása az, hogy egyszerűen szerkeszti a futtatott makró kódját, hogy rendszeresen mentse el, és zárja be a cél munkafüzetet, miközben másolja a munkalapot. A makró kódja, amely ezt megteszi, a következők szerint néz ki:

 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 

Megjegyzés: A munkalap másolásának pontos száma, mielőtt el akarja menteni és bezárja a munkafüzetet, a másolatok mentése esetenként változik, mivel ez a munkalap méretétől függ, amelyben másolatot készít.

A megoldás:

Mint már korábban kijelentettük, ezen specifikus probléma megoldására is megoldást találunk. A probléma megkerülése egyszerű feladat egy új munkalap beillesztése egy sablonból a meglévő munkalap másolatának létrehozása helyett. Ha szeretne megkerülni ezt a problémát, akkor tegye a következőket:

  1. Indítsa el az Excel alkalmazást .
  2. Hozzon létre egy új munkafüzetet, és töröljön minden munkalapot, amelyben a munkafüzet tartalmaz, kivéve az egyiket.

  3. Formázza a munkafüzetet.
  4. Adjon hozzá minden szöveget, adatot és / vagy diagramot, amelyet alapértelmezés szerint meg szeretne adni a sablonban, az egyetlen munkalaphoz, amelyet a munkafüzet most tartalmaz.
  5. Ha Excel 2003-at vagy korábbi verziót használ, kattintson a Fájl > Mentés másként elemre. Ha viszont Excel 2007 vagy újabb verziót használ, kattintson a Microsoft Office gombra, majd a Mentés másként elemre.

  6. A Fájlnév : mezőbe írja be, amit meg akarja hívni a sablonhoz.
  7. Nyissa meg a Mentés típusaként: mező melletti legördülő menüt, és kattintson az Excel Template (.xlt) -re, ha Excel 2003-at vagy annál korábbi, vagy az Excel Template-ra (.xltx), ha az Excel 2007 vagy újabb verziót használja annak kiválasztásához.

  8. Kattintson a Mentés gombra.

  9. Miután sikeresen létrehozta a sablont, beillesztheti azt programozottan a következő kódsor használatával:

    Sheets.Add Type: = elérési út \ fájlnév

Megjegyzés: A fentebb leírt kódsorban az elérési út \ fájlnév helyébe az újonnan létrehozott lapsablon helyének teljes elérési útját kell cserélni (a teljes fájlnevet is beleértve).

Érdekes Cikkek