Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Laufzeitfehler 1004 beim Tabellenblätter kopieren

Laufzeitfehler 1004 beim Tabellenblätter kopieren
11.02.2007 12:03:11
Oliver
Hallo, ich wünsche allen im Forum einen schönen Guten Morgen
Ich habe ein kleines Problem beim kopieren von Tabellenblättern.
Ich habe das Mastertabellenblatt (1) und will dieses z.B. 100 mal kopieren.
Dazu soll das neue Tabellenblatt vor dem bestehenden Tabellenblatt (Arbeit2) eingefügt werden, und die neuen Tabellenblätter sollen autmatisch mit einem Namen versehen werden (hier von "2" nummerisch aufsteigend bis "110").
Ich habe schon Code verfasst, aber nach dem er Blatt 32 erschaffen hat, bricht das Makro immer ab mit der Fehlermeldung "Laufzeitfehler 1004: Die Copy-Methode des Worksheet-Objektes konnte nicht ausgeführt werden."
Ich hänge hier mal den Code an:

Sub Tabellenblaetter_kopieren()
' Tabellenblätter_kopieren Makro
Application.ScreenUpdating = False
Dim n, m, p, x, Punkt8, AnzahlKst, AnzahlKostart As Integer
'Hier muss noch die Anzahl der KoSt ermittelt werden
'Sheets("TAB").Select
'Range("E2").Select
'Cells(Rows.Count, xyz).End(xlUp).Row
'AnzahlKst = ActiveCell.Value
n = 5
m = 2
p = 5
x = 2
Punkt8 = 2
For i = 3 To 110
'Wählt das erste (Master) Tabellenblatt (1) aus und kopiert
'dieses so oft wie KoSt eingetragen sind in TAB und fügt
'jedes neue Tabellenblatt vor Blatt (ARBEIT2) ein
Sheets("1").Select
ActiveWindow.SmallScroll Down:=-15
Sheets("1").Select
Application.CutCopyMode = False
Sheets("1").Copy Before:=Sheets(n)
'Bennent jedes neue Tabellenblatt um, aufsteigend von 1 beginnend
Sheets("1 (2)").Select
Sheets("1 (2)").Name = m
'Holt sich aus dem TAB Tabelle die einzelnen KoSt Nummern und trägt
'diese automatisch ein
Sheets("TAB").Select
[A1].Offset(x, 4).Select
Selection.Copy
Sheets(p).Select
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("TAB").Select
Sheets("SAP Upload").Select
n = n + 1
m = m + 1
p = p + 1
x = x + 1
Punkt8 = Punkt8 + 1
Next
End Sub

Wäre schön wenn jemand eine Idee hat, wo das Problem liegt bzw. wie man es gelöst bekommt.
Ich danke bereits vorab, Feedback ist selbstverständlich.
Gruß Olli

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 beim Tabellenblätter kopieren
11.02.2007 12:30:37
Oliver
Danke Horst
aber das Hilft mir nicht wirklich weiter, da hier das Problem wohl über ein Add-In
gelöst wird.
Für mein Problem ist der Einsatz eines Add-In nicht machbar.
Hat vieleicht noch jemand nee Idee wie man das mit Code in den Griff bekommt?
mfg Olli
AW: Laufzeitfehler 1004 beim Tabellenblätter kopie
11.02.2007 12:36:45
Hans
Hallo Olli,
der Code ist bei mir problemlos durchgelaufen.
Kann es sein, dass es sich bei der Arbeitsmappe um ein sehr altes Teil (XL97 oder früher) handelt? Dann gibt möglicherweise Probleme mit den VBA-Dateinamen, da in der 97-Version die VBA-Dateinamenvergabe erfolgte, indem immer eine Ziffer an die bestehenden angehangen wurde, womit dann irgendwann die Ende der Fahnenstange errreicht war.
Noch kurz zum Code:
Es gibt die weitverbreitete, aber falsche Auffassung, dass bei einer Variablendeklaration wie folgt:
Dim a, b, c, d as Integer
die Variablen als Integer deklariert werden. Es ist aber so, dass hier nur d Integer ist, die anderen aber Variant sind.
Prüfe Deinen Code auch auf alle Selection-Sequenzen. Sie sind alle überflüssig. Im konkreten Fall führt das zwar nicht zu einer erkennbaren Verlangsamung des Ablaufes, es macht den Code aber unübersichtlich.
gruss hans
Anzeige
AW: Laufzeitfehler 1004 beim Tabellenblätter kopie
11.02.2007 13:03:37
Oliver
Hallo Hans
Also ich arbeite hier mit Excel 2003, ist auch alles damit erstellt worden.
Der Abbruch erfolgt jedoch sporadisch (mal früher mal später).
Dann muss ich Excel ganz schließen, sonst kann ich gar keine Tabellenbläter mehr kopieren, auch nicht von Hand.
Danke für den Tip mit der Variablendeklaration, habe es jetzt geändert, werde es mir merken.
Habe noch zwei mal versucht, einmal brach er nach 12 kopiervorgängen ab, einmal nach 38.
? kommt auch nicht mehr der Laufzeitfehler, er makiert nur die Spalte
Sheets("1").Copy Before:=Sheets(n)
gelb, und nichts geht mehr.
Vieleicht noch nee Idee?
und das mit den Selection Sequenzen hab ich irgendwie noch nicht ganz verstanden.
Die kann ich weg lassen und er weiß trozdem was er tun muss ?!?!?!?!
(dann mach ich vieleicht mal wieder Experimente, sicher den ursprünglichen Code, und
Bastell so lange an der Kopie rum bis es funktioniert .... oder nicht ;-)
Wäre aber über weitere Hilfe zum eigendlichen Problem sehr dankbar.
mfg Olli
Anzeige
AW: Laufzeitfehler 1004 beim Tabellenblätter kopie
11.02.2007 13:50:49
Hans
Hallo Oliver,
verändere an dem nachfolgenden Code mal nichts und lass ihn einfach mal in Einer Arbeitsmappe laufen, wir werden sehen was passiert. Aus dem Code geht auch hervor, was ich mit unnötigem Selektieren gemeint habe:

Sub Tabellenblaetter_kopieren()
Dim wks As Worksheet
Dim rng As Range
Application.ScreenUpdating = False
Dim i As Integer, n As Integer, m As Integer, _
p As Integer, x As Integer, Punkt8 As Integer, _
AnzKst As Integer
AnzKst = Worksheets("TAB").Cells(Rows.Count, 5).End(xlUp).Row
m = 2
x = 2
For i = 1 To AnzKst
Worksheets("1").Copy before:=Worksheets(5)
ActiveSheet.Name = CStr(m)
Sheets("TAB").Select
Worksheets("TAB").Cells(x, 4).Copy Range("D2")
m = m + 1
x = x + 1
Next
End Sub

gruss hans
Anzeige
AW: Laufzeitfehler 1004 beim Tabellenblätter kopie
11.02.2007 15:58:01
Oliver
Danke an Hans
Habe den Code von dir probiert, ohne etwas zu verändern, brachte leider keinen Erfolg,
bricht immer noch mitendrin ab, diesmal bei 37 Kopien.
Aber Hubert hatte nee Idee, kann aber leider nicht genau erkennen was er mir mit seiner Anwort sagen wollte.
mfg Olli
AW: Laufzeitfehler 1004 beim Tabellenblätter kopie
11.02.2007 18:53:23
Hubert
Hi,
er wollte sagen, probier das mal in einer neuen Mappe ob und wann es da
zum Fehler kommt.
Er könnte dir die Ursachen erklären, aber das hilft allenfalls das Problem zu
verstehen, zu lösen ist das nicht.
Teste die Grenze bis zum Fehler, z.B. nach 35 Kopien. Dann wähle ein sicheres
Interval, z.B. 20. Mach 20 Kopien, Mappe zu, Mappe auf, wieder 20 Kopien usw.
Das Ganze natürlich programmgesteuert.
mfg Hubert
Anzeige
AW: Laufzeitfehler 1004 beim Tabellenblätter kopie
11.02.2007 19:06:31
Oliver
Hi
Ich habs schon getestet, aber nicht programmgesteuert sondern manuell, Fehler kommt am Anfang nach ca 30 - 40 sheets, dann nach ca 25 - 30. Könnte auch ein Problem sein das er sofort versucht die diversen Verknüfungen in den Tabellen zu aktuallisieren, die automatische berechnungsfunktion ab ich schon abgestellt, sonst hängt sich Excel auf.
Auch ist die Dateigröße plötzlich von ca. 2 MB auf etwa 16 MB angewachsen, auch wenn ich keine zusätzlichen Tabellenblätter generiert habe. Gibt es da eigendlich auch nee Möglichkeit (wie bei Access) das man die Mappe defragmentieren kann?
Ich muss Mogen noch mal gucken, vieleicht geht es ja wirklich besser wenn ich erst eine größere Anzahl leerer Tabellenblätter anlege, und dann vom MASTERblatt denn Inhalt in diese Blätter kopiere.
Ich danke aber für eure Hilfe
mfg Olli
Anzeige
AW: Laufzeitfehler 1004 beim Tabellenblätter kopie
11.02.2007 19:49:06
Hubert
"Ich muss Mogen noch mal gucken, vieleicht geht es ja wirklich besser wenn ich erst eine größere Anzahl leerer Tabellenblätter anlege, und dann vom MASTERblatt denn Inhalt in diese Blätter kopiere."
Ist die beste Variante.
mfg Hubert
AW: Laufzeitfehler 1004 beim Tabellenblätter kopieren
11.02.2007 14:26:29
Hubert
Hi,
da liegt nicht an dem Code sondern an der Struktur der Mappe.
Daran kannst du auch nichts ändern. Workaround, 20 Kopien, Mappe zu,
Mappe auf, 20 Kopien usw., kann alles programmtechnisch gemacht werden.
Wenn du das Ganze in einer neuen Mappe machst, kannst du wesentlich
mehr Kopien erzeugen.
mfg Hubert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige