So beheben Sie den Laufzeitfehler 1004 in Excel

Der Laufzeitfehler 1004 ist ein Fehlercode für Microsoft Visual Basic, von dem bekannt ist, dass er Microsoft Excel-Benutzer betrifft. Es ist bekannt, dass der Fehler in Excel 2003 und Excel 2007 am häufigsten auftritt, obwohl keine Version der beliebten Arbeitsblattanwendung von Microsoft für Computer vor der Bedrohung durch den Laufzeitfehler 1004 geschützt ist. In den meisten Fällen sehen Benutzer, die von diesem Problem betroffen sind, eine der folgenden zwei verschiedene Variationen des Laufzeitfehlers 1004. In ihrer Gesamtheit lauten die beiden Variationen des Laufzeitfehlers 1004:

Laufzeitfehler ‘1004’:
Kopiermethode der Arbeitsblattklasse fehlgeschlagen

Laufzeitfehler ‘1004’:
Anwendungsdefinierter oder objektdefinierter Fehler

Die genaue Fehlermeldung, die Sie sehen, kann in einigen Fällen auch geringfügig variieren, obwohl der Fehlercode gleich bleibt. Unabhängig davon, welche Version des Problems auftritt, tritt es fast immer auf, wenn ein Makro in Excel ausgeführt wird, mit dem Arbeitsblätter kopiert und anschließend in dieselbe Arbeitsmappe wie das ursprüngliche Arbeitsblatt eingefügt werden.

Im Gegensatz zu den schlimmsten technischen Problemen ist die Ursache des Laufzeitfehlers 1004 in Microsoft Excel bekannt. Der Laufzeitfehler 1004 tritt auf, wenn das von Ihnen ausgeführte Makro das ursprüngliche Arbeitsblatt in eine Arbeitsmappe mit einem definierten Namen kopiert, den Sie vor dem Ausführen des Makros nicht gespeichert und geschlossen haben. Ein Beispiel für ein solches Makro ist im folgenden Code zu sehen:

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 die Ursache des Laufzeitfehlers 1004 im Kontext von Microsoft Excel bekannt ist, ist auch die Auflösung bekannt. Neben einer Lösung für dieses Problem steht den betroffenen Benutzern auch eine Problemumgehung zur Verfügung, die für den Fall verwendet werden kann, dass die Lösung nicht funktioniert oder sie die Lösung nicht als praktikable Option ansehen.

Die Lösung:

Die Lösung für dieses spezielle Problem besteht darin, einfach den Code des von Ihnen ausgeführten Makros zu bearbeiten, damit es die Zielarbeitsmappe regelmäßig speichert und schließt, während Kopien der Arbeitsblätter erstellt werden. Der Code für ein Makro, das dies tut, sieht ungefähr so ​​aus:

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

Hinweis: Die genaue Häufigkeit, mit der Sie ein Arbeitsblatt kopieren können, bevor Sie die Arbeitsmappe speichern und schließen müssen, in der die Kopien gespeichert werden, variiert von Fall zu Fall, da dies von der Größe des Arbeitsblatts abhängt, von dem Sie Kopien erstellen.

Die Problemumgehung:

Wie bereits erwähnt, gibt es auch eine Problemumgehung für dieses spezielle Problem. Um dieses Problem zu umgehen, müssen Sie lediglich ein neues Arbeitsblatt aus einer Vorlage einfügen, anstatt eine Kopie eines vorhandenen Arbeitsblatts zu erstellen. Wenn Sie dieses Problem umgehen möchten, müssen Sie Folgendes tun:

  1. Starten Excel.
  2. Erstellen Sie eine neue Arbeitsmappe und löschen Jedes einzelne Arbeitsblatt in der Arbeitsmappe enthält bis auf eines.
  3. Format die Arbeitsmappe.
  4. Fügen Sie dem einzigen Arbeitsblatt, das die Arbeitsmappe jetzt enthält, standardmäßig Text, Daten und / oder Diagramme hinzu, die Sie standardmäßig in der Vorlage haben möchten.
  5. Wenn Sie Excel 2003 oder früher verwenden, klicken Sie auf Datei > Speichern als. Wenn Sie dagegen Excel 2007 oder höher verwenden, klicken Sie auf Microsoft Office Schaltfläche und klicken Sie dann auf Speichern als.
  6. In dem Dateiname:: Geben Sie in das Feld ein, wie die Vorlage aufgerufen werden soll.
  7. Öffnen Sie das Dropdown-Menü neben dem Speichern unter: Feld und klicken Sie auf Excel Vorlage (.xlt) wenn Sie Excel 2003 oder früher verwenden, oder Excel Vorlage (.xltx) Wenn Sie Excel 2007 oder höher verwenden, um es auszuwählen.
  8. Klicke auf sparen.
  9. Nachdem Sie die Vorlage erfolgreich erstellt haben, können Sie sie mithilfe der folgenden Codezeile programmgesteuert einfügen:
    Sheets.Add Type: =Pfad.Dateiname

Hinweis: In der oben beschriebenen Codezeile Pfad Dateiname muss durch den vollständigen Pfad (einschließlich des vollständigen Dateinamens) für den Speicherort der soeben erstellten Blattvorlage ersetzt werden.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *