Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
496to500
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
496to500
496to500
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellenblatt mehrfach kopieren

Tabellenblatt mehrfach kopieren
10.10.2004 23:08:32
Klaus
Hallo zusammen,
ich versuche verzweifelt ein Tabellenblatt mehrfach zu kopieren.
Prinzipiell klappt es auch dank der vielen Beispiele hier.
Nach so ca. 30 Kopien (je nach Seitenvolumen) bricht das kopieren aber ab mit folgender Meldung:
Laufzeitfehler 1004
Die Copy Methode des Worksheet-Objekts konnte nicht ausgeführt werde.
Irgendwie habe ich das Gefühl dass da irgend ein Speicherbereich voll läuft.
Kann mir irgendjemand weiterhelfen?
Vielen dank im Vorraus
Klaus

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt mehrfach kopieren
Oberschlumpf
Hi Klaus
Wenn Du bitte Deine Datei (nich mit echten, aber Bsp-Daten und der Struktur, die Fehler verursacht) auf dem Server speicherst, können wir vielleicht helfen.
Schon mal...
Thx & Bye
Thorsten
AW: Tabellenblatt mehrfach kopieren
11.10.2004 07:46:27
Matthias
Versuchmal hiermit:

Sub Blätter_Einfügen()
Dim iCounter As Integer
Dim iCount As Integer
Application.ScreenUpdating = False
For iCounter = 1 To Range("K1").Value   In Diese Zelle die anzahl der Gewünschten Kopien eingeben
iCount = Worksheets.Count
Worksheets(iCount).Visible = True
Worksheets(iCount).Copy after:=Worksheets(iCount)
ActiveSheet.Name = "Name des Blattes das Kopiert werden Soll" & iCounter + 1
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName)
.Properties("_CodeName").Value = ActiveSheet.Name
End With
Next iCounter
Worksheets(1).Select
Application.ScreenUpdating = True
End Sub

MFG Matthias
Anzeige
AW: Tabellenblatt mehrfach kopieren
Klaus
Hallo,
vielen dank erstmal für die Antworten!
ich werde wohl demnächst die Tabelle hier hochladen ..
Klaus
AW: Tabellenblatt mehrfach kopieren
Klaus
Mist ..
die tabelle lässt sich nicht hochladen ...
vielleicht zu gross?
4400kb ca..
Klaus
AW: Tabellenblatt mehrfach kopieren
12.10.2004 07:53:17
Matthias
Hallo Klaus
Erstelle doch einfach eine Test Datei in der nur nicht zu viele Werte drin stehen
Wie in der orginal Datei
Versuche diese Datei hochzuladen
Falls Bilder,Firmenlogos,Tabellen oder Grafiken drin sein solten schmeiss die raus die nehmen nur unnötig platz weg.
MFG Matthias
AW: Tabellenblatt mehrfach kopieren
Klaus
Hallo nochmal,
also meine Tabelle bekomme ich hier nicht rein, ich müsste sonst zu viele Blätter weglasen auf die ich Verweise gesetzt habe. Ich habe aber im web eine Hinweis gefunden der vieleicht weiterhilft...
leider habe ich viel zu wenig ahnung um meinen code anzupassen .. aber vielleicht kann mir jemand helfen ..
Hier erstmal mein Code:

Sub testkopie()
Dim Ini As Integer
For Ini = 2 To 70
Worksheets("E1").Copy after:=Sheets(Worksheets.Count)
ActiveSheet.Name = "E" & Ini
Next Ini
With Application.VBE.ActiveVBProject
.VBComponents.Remove .VBComponents("Modul1")
End With
End Sub

Klappt bis das Makro irgendwann abbricht....
Hier habe ich hinweise gefunden die vermutlich die ursache sind ..
leider kann ich die nicht umsetzen - ich vermute mal dass es aber nur ein paar zeilen code sind .
Bin dankbar für jede Hilfe!
Gruss Klaus
schnipp ---------------------------------------------------------------
Bei der Automation von Excel 97 oder höher kann es unter anderem zu einer der folgenden Fehlermeldungen kommen:


Laufzeitfehler '1004'
Method '' of object '_Global' failed
- oder -
Application-defined or object-defined error

Bei der Automation von Excel 95:


Laufzeitfehler '462'
Der Remote-Server-Computer existiert nicht oder ist nicht
verfügbar.

Ursache der Fehlermeldungen

Auf Grund eines Zugriffs auf ein Excel-Objekt, eine -Methode oder -Eigenschaft ohne einen gültigen Objektverweis, hat Visual Basic einen Verweis zu Excel eingerichtet, der erst wieder freigegeben wird, wenn das Programm beendet wird. Dieser fehlerhafte Verweis verursacht die obigen Fehlermeldungen, wenn der Code mehr als einmal ausgeführt wird.
Problemlösung

Ändern Sie den Code so, dass jeder Aufruf eines Excel-Objekts, einer -Methode oder -Eigenschaft durch die entsprechende Objektvariable definiert wird.
Weitere Informationen

Zur Automation von Microsoft Excel legen Sie eine Objektvariable fest, die normalerweise auf das Application-Objekt (Excel-Anwendung) und/oder auf ein Workbook-Objekt (Arbeitsmappe) verweist. Selbstverständlich können auch weitere Objektvariablen festgelegt werden, die beispielsweise auf ein Tabellenblatt (Worksheet), einen Bereich (Range) oder andere Objekte im Excel-Objektmodell verweisen.

Wenn im Code ein Excel-Objekt, eine -Methode oder -Eigenschaft verwendet wird, sollte der Aufruf nur in Verbindung mit einer entsprechenden Objektvariable erfolgen. Fehlt diese Objektvariable, legt Visual Basic eine verborgene globale Variable für die aktuell ausgeführte Instanz fest.

Wird Excel beendet oder die deklarierte Objektvariable freigegeben, verweist die verborgene globale Variable auf ein ungültiges (zerstörtes) Objekt. Bei erneutem Ausführen des Automatisierungscodes, schlagen Aufrufe zu der verborgenen Objektvariable fehl.
Beispiel mit fehlerhaftem Code

Mit folgendem Beispiel kann der Fehler reproduziert werden.

Für die Ausführung des Codes wird für Excel 97 die Microsoft Excel 8.0 Object Library, für Office 2000 die Microsoft Excel 9.0 Object Library und für Excel 2002 (XP) die Microsoft Excel 10.0 Object Library benötigt.



Sub Demo_ExcelAutomationError()
1:   Dim objXLApp   As Excel.Application
2:   Dim objXLWkb   As Excel.Workbook
3:   Dim objXLWks   As Excel.Worksheet
4:   Set objXLApp = CreateObject("Excel.Application")
5:   objXLApp.Visible = True
6:   Set objXLWkb = objXLApp.Workbooks.Add
7:   Set objXLWks = objXLWkb.Worksheets(1)
8:   objXLWks.Range(Cells(1, 1), Cells(1, 1)).Value = "Hi"
9:   Set objXLWks = Nothing
10:   With objXLWkb
11:     .Saved = True
12:     .Close
13:  End With
14:  Set objXLWkb = Nothing
15:  objXLApp.Quit
16:  Set objXLApp = Nothing
End Sub



Führen Sie die Prozedur das erste Mal aus, tritt kein Fehler auf. Es wurde jedoch auf Grund fehlender Objektkennzeichner in der Codezeile 8 ein Verweis zu Excel erstellt, der nicht wieder freigegeben wurde.

Bei erneutem Aufruf der Prozedur tritt der oben beschriebene Fehler in Zeile 8 auf, da bei der Cells-Methode (in zwei Fällen) der Objektkennzeichner objXLWks für das Tabellenblatt fehlt.
Ändern Sie


8: objXLWks.Range(Cells(1, 1), Cells(1, 1)).Value = "Hi"

- in -


8: objXLWks.Range(objXLWks.Cells(1, 1), _
objXLWks.Cells(1, 1)).Value = "Hi"

- oder besser noch in -


8: With objXLWks
.Range(.Cells(1, 1), .Cells(1, 1))
.Value = "Hi"
End With

Nach Änderung der Codezeile 8 kann die Prozedur immer wieder fehlerfrei ausgeführt werden.
Excel-VB(A)-Hilfe

Wurde im Projekt ein Verweis auf die Microsoft Excel x.0 Object Library gesetzt, stehen die Beispiele für die Objekte, Methoden und Eigenschaften des Excel-Objektmodells in der Excel-VB(A)-Hilfe-Datei zur Verfügung. Befindet sich der Cursor im Code in einem Schlüsselwort, kann die Hilfe mit der Taste [F1] aufgerufen werden.

Die Beispiele in den Hilfethemen sind jedoch für Excel VBA (Visual Basic for Applications) und müssen für die Automation von Excel mit den entsprechenden Objektkennzeichnern ergänzt werden.
Beispiel Cells-Eigenschaft in der Excel-VB(A)-Hilfe


Worksheets("Sheet1").Activate
Range(Cells(1, 1), Cells(5, 3)).Font.Italic = True

Beispiel für die Automation von Excel
(in Anlehnung an die Objektvariablen in obigem Beispiel)


With objXLWks
.Range(.Cells(1, 1), .Cells(5, 3)).Font.Italic = True
End With

Anzeige
AW: Tabellenblatt mehrfach kopieren
13.10.2004 07:43:33
Matthias
Setze in K1 die gewünschte anzahl der Kopien ein
Wenn K1 bei dir nicht frei sein sollte nimm ne adere Zelle
Und trage diese in die Zeile For iCounter=1to Range ("K1").value ein für K1 nimmmst du deine frei zelle

Sub Blätter_Einfügen()
Dim iCounter As Integer
Dim iCount As Integer
Application.ScreenUpdating = False
For iCounter = 1 To Range("K1").Value   In Diese Zelle die anzahl der Gewünschten Kopien eingeben
iCount = Worksheets.Count
Worksheets(iCount).Visible = True
Worksheets(iCount).Copy after:=Worksheets(iCount)
ActiveSheet.Name = "E" & iCounter + 1
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName)
.Properties("_CodeName").Value = ActiveSheet.Name
End With
Next iCounter
Worksheets(1).Select
Application.ScreenUpdating = True
End Sub

Mfg Matthias
Anzeige
AW: Tabellenblatt mehrfach kopieren
Klaus
Hallo,
ich hatte deinen Code schonmal probiert ...
hat leider auch nicht geklappt. bricht immer na einer anzahl x zellen ab..
gruss Klaus

38 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige