Wie Laufzeitfehler 1004 in Excel zu beheben

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 von Microsofts populärer Arbeitsblattanwendung für Computer vor der Bedrohung durch den Laufzeitfehler 1004 sicher ist. In den meisten Fällen wird Benutzern, die von diesem Problem betroffen sind, eine davon angezeigt zwei verschiedene Variationen des Laufzeitfehlers 1004. In ihrer Gesamtheit lauten die zwei Variationen des Laufzeitfehlers 1004:

" Laufzeitfehler '1004':

Kopiermethode der Arbeitsblattklasse fehlgeschlagen “

" Laufzeitfehler '1004':

Anwendungsdefinierter oder objektdefinierter Fehler

Die genaue Fehlermeldung, die angezeigt wird, kann in einigen Fällen auch geringfügig abweichen, obwohl der Fehlercode gleich bleibt. Unabhängig von der Version des Problems tritt es jedoch fast immer auf, wenn in Excel ein Makro ausgeführt wird, mit dem Arbeitsblätter kopiert und die Kopien dann in derselben Arbeitsmappe wie das ursprüngliche Arbeitsblatt abgelegt 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 finden Sie im folgenden Code:

 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. Zusätzlich zu einer Lösung für dieses Problem steht Benutzern, die davon betroffen sind, eine Problemumgehung zur Verfügung, die verwendet werden kann, wenn die Lösung nicht funktioniert oder sie die Lösung nicht für eine praktikable Option halten.

Die Lösung:

Die Lösung für dieses spezielle Problem besteht darin, einfach den Code des ausgeführten Makros zu bearbeiten, damit die Zielarbeitsmappe regelmäßig gespeichert und geschlossen wird, während Kopien der Arbeitsblätter erstellt werden. Der Code für ein Makro, das dies ausführt, sieht folgendermaßen 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, variiert von Fall zu Fall, da sie 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 Sie Excel .
  2. Erstellen Sie eine neue Arbeitsmappe, und löschen Sie jedes einzelne Arbeitsblatt, das die Arbeitsmappe enthält.

  3. Formatieren Sie die Arbeitsmappe.
  4. Fügen Sie dem einzigen Arbeitsblatt, das die Arbeitsmappe jetzt enthält, 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 unter . Wenn Sie hingegen Excel 2007 oder höher verwenden, klicken Sie auf die Microsoft Office- Schaltfläche und dann auf Speichern unter .

  6. Geben Sie im Feld Dateiname : ein, wie die Vorlage heißen soll.
  7. Öffnen Sie das Dropdown-Menü neben dem Feld Dateityp : und klicken Sie auf Excel- Vorlage (.xlt), wenn Sie Excel 2003 oder eine frühere Version verwenden, oder auf Excel- Vorlage (.xltx), wenn Sie Excel 2007 oder eine spätere Version verwenden, um sie auszuwählen.

  8. Klicken Sie auf Speichern .

  9. Nachdem Sie die Vorlage erfolgreich erstellt haben, können Sie sie mithilfe der folgenden Codezeile programmgesteuert einfügen:

    Sheets.Add Typ: = Pfad \ Dateiname

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

Interessante Artikel