Codenamen einer Tabelle ändern
08.08.2003 21:13:35
Nic
ich arbeite schon seit einiger Weile an einer Sache, von der ich eigentlich meinte, dass sie ganz einfach sei: Eine sehr große Tabelle (aus 5 MB Textdatei) innerhalb eines Tabelleblatts auf ganz viele Tabellenblätter verteilen. Inzwischen nahezu verzweifelt, bei jedem Ansatz so richtig gescheitert.
1. Ansatz
Copy and Paste. Schafft Excel nicht, es kommt zu Abstürzen. Hab alles ausprobiert, Microsoft-Bug, vgl. Forums-Thread "Grosse Datei - stürzt ab bei Copy/Paste (m/o VBA)" https://www.herber.de/forum/archiv/16to20/t16803.htm
2. Ansatz
Eleganter Transfer über Array. Elegant daher, da über Resize, somit wesentlich schneller. Übertragung der Werte von Feld zu Feld dauert viel zu lange. Funktionierte auch nicht, Resize für Range gibts wohl erst ab Excel 2000. Hab noch ein paar Stunden drumherumprogrammiert, keine Chance. War aber eh nicht ideal, erheblicher Geschwindingkeitsverlust gegenüber der Kopier-Methode, selbst wenn es geklappt hätte.
3. Ansatz
Ideale Methode gefunden: Einfach Tabellenblatt kopieren, überflüssige Daten löschen, solange bis alles aufgeteilt ist. Und, na klar, erkannter Microsoft-Bug, der Codename. Wird nicht normal hochgezählt, sondern jeweils um eine Zehnerpotenz erhöht. Zum Glück bei Herber längst erkannt und gelöst:
https://www.herber.de/forum/archiv/140to144/t140910.htm
http://xlarchiv.herber.de/56to60/t57315.htm
https://www.herber.de/forum/archiv/24to28/t24332.htm
https://www.herber.de/mailing/047399h.htm
http://www.excel-cd.de/mailing/047399h.htm
Jetzt kommt endlich mein aktuelles Problem:
Egal welchen dieser Codes ich ausprobieren (und bei allen anderen scheint er zu klappen), ich erhalte die Meldung
Laufzeitfehler '-2147352565 (800200b)':
Index außerhalb des gültigen Bereichs
Habe in diesem Fall die Codes noch nicht mal in mein Makro übertragen, sondern nur rüberkopiert und gestartet.
Beispiel
'CodeName des neuen Blattes aendern
CoNa = "Tabelle0"
If Sheets.Count > 9 Then CoNa = "Tabelle"
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName)
.Properties("_CodeName").Value = CoNa & Sheets.Count
End With
Hat jemand eine Idee, woher der Fehler kommt, bzw. eine praktikable Lösung für mein Gesamtproblem?