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

Kopieren m. Spaltenformat

Kopieren m. Spaltenformat
10.08.2005 11:01:34
KViertel
Hallo,
ich suche nach einer Lösung, einen Bereich von Tabelle1 mit allen Formaten hier besonders Spaltenbreite, Spaltenhöhe, verbundenen Zellen in Tabelle2 zu kopieren.
Es geht darum, ein mit unterschiedlichen Spaltenbreiten und z.T. Spaltenhöhen sowie verbundenen Zellen definiertes Formular, in ein anderes Tabellenblatt hinein zu kopieren. Der Hintergrund ist, dass ich in ein Formular aus einer DB Daten eintrage, die über VBA gesteuert, bei jedem Datensatz in verschiedenen Bereichen eine unterschiedliche Anzahl von Zeilen einfügt und anschließend das Formular ausdruckt. Aus diesem Grund muß ich bei jedem neuen Blatt wieder von der Urversion ausgehen. Tabellenblatt kopieren und umbenennen führt nach ca. 100 gedruckten Blättern zum Abbruch.
MfG. Klaus

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren m. Spaltenformat
10.08.2005 16:24:10
Bernhard_27
Hallo Klaus,
habe gleiches Anliegen und gleiches Problem. Mit der sheets().copy - Methode gibt es nach einer gewissen Anzahl Durchläufen Excel-Datenmüll im Arbeitsspeicher (temporäre Ablage), der dazu führt, daß die Copy-Methode nicht mehr angewendet werden kann. Habe hierzu im Forum einen Hinweis zu einer ähnlichen Fragestellung gelesen (Leo hat sich gemeldet, liegt schon einige Zeit zurück). Es bleibt also nur die sheets().add - Methode, dann müssen aber die Formate - und eben auch die Spaltenbreiten, Zeilenhöhen usw. - von dem Masterblatt in das neue Arbeitsblatt kopiert werden. Aber wie geht das in VBA (Kopie aller Blatt- und Zell-Eigenschaften und Formate)?.
Vielleicht hat "Leo" ja eine Antwort.
Bernhard_27
Anzeige
AW: Kopieren m. Spaltenformat
10.08.2005 16:37:15
Leo
Hi,
wenn du so kopierst(Tabellennamen sind die Codenamen):
Tabelle1.cells.copy Tabelle2.[a1]
werden alle Formate mitkopiert. Ob es wegen der verbundenen Zellen Probleme gibt,
hab ich nicht getestet, weil ich die nie verwende.
Falls du die Blätter in einer Schleife kopierst, kannst du z.B. nach jedem zwanzigsten
Durchlauf die Datei programmtechnisch speichern, schließen und sofort wieder öffnen.
mfg Leo
AW: Kopieren m. Spaltenformat
bernhard_27
Danke für den Tip mit der copy.cells - Methode.
Aber wenn die Datei innerhalb eines Loops programmtechnisch geschlossen werden soll, hat das doch zur Konsequenz, daß das VBA-script in einer anderen Datei stehen muß, die dann diese zu behandelnde Datei aufruft bzw. wieder schließt, oder?
Wird denn bei der copy.cells - Methode auch der Zwischenspeicher zugemüllt?
Gruß Bernhard_27
Anzeige
AW: Kopieren m. Spaltenformat
10.08.2005 17:35:02
Leo
Hi,
zu 1: Ja, klar, das kann ein Makro in der PERSONL.XLS oder in einem Add-In sein.
zu 2: Wenn du nach jedem Kopiervorgang die Zwischenablage leerst, sollte da nichts
zugemüllt werden. Ich hab da in der Praxis noch keine Probleme gehabt.
mfg Leo
AW: Kopieren m. Spaltenformat
10.08.2005 17:17:35
bernhard_27
Hallo Leo,
der Test ergab, daß verbundene Zellen mit kopiert wurden (habe allerdings im Arbeitsblatt nur testweise eine eingebaut, bestehend aus 5 Einzelzellen).
Stelle aber fest, daß Checkboxen nicht mitkopiert werden. Ich habe in meinem Master-Sheet ca. 16 Checkboxen (Formular), die mit kopiert werden müssen. Gibt es hierfür auch eine praktische Lösung?
Bernhard_27
Anzeige
AW: Kopieren m. Spaltenformat
11.08.2005 15:03:34
kviertel
Hallo,
ich bedanke mich für die sich aus meiner Fragestellung ergebenen Antworten.
Ich habe versucht, meine Anwendung dahingehen zu ändern, was eigentlich auch klappen würde, aber jetzt kommt das nächste Problem.
Da es 5 verschiedene Blöcke gibt, die mit Daten aus mehreren Datensätzen einer anderen Tabelle gefüllt werden (von 0 DS - ca. 10 DS) füge ich diese DS per insert ein. Dadurch verändert sich die Einsprungszeile für den nächsten Block. Dazu habe ich jedem Einsprungspunkt einen Namen gegeben, dessen Bezug sich dadurch automatisch anpasst.
Beim Kopieren des Blattes kein Problem. Bei Kopieren mit Cells werden die Namen aber nicht übergeben, bzw. mit "Bezug!ZS".
Daraufhin habe ich für das eingefügte Blatt mit Application.Names.Add neue Blocknamen eingebaut. Im Moment nach der Übergabe werden auch die richtigen Namen und Bezüge angezeigt, aber dann intern total verändert, so daß kein Bezug mehr stimmt.
Ursache ?. Beispiel: programmierter Bezug "B14" wird bei späterem Einsehen zu "B138" und tatsächlich aufgesetzt wird bei "B40", also ein totales Chaos.
Wir werden wohl damit leben müssen, Excel alle Nasen lang neu starten zu müssen.
In der DB werden Örtlichkeiten von Betrieben, die unterschiedlich groß sind beschrieben. Einzelne Betr. sind 50 ha groß und haben ca. 10 solcher Abteilungen, während der nächste 6000 ha groß ist und 150 solcher Abt. hat. Dadurch sind große Betriebe nicht komplett ausdruckbar.
MfG. Klaus
Anzeige
AW: Kopieren m. Spaltenformat
bernhard_27
Hallo Klaus (und auch Leo zum Mitlesen),
Schau mal nach auf der Microsoft Support-Seite unter dem Artikel ID-Nr. 177634
http://support.microsoft.com/default.aspx?scid=kb;de;177634
hier ist das Problem und auch die Ursache genau beschrieben. Die Ursache ist der immer länger werdende Codenamen für die wiederholt kopierten Arbeitsmappen, die mit dem Umbenennen offenbar nicht gelöscht werden. Dieser ist aber in der Länge begrenzt (was sich B.G. dabei gedacht hat?).
Da die sheets.add - Methode nur zusätzliche neue Probleme mit sich bringt, habe ich mir überlegt, bei der Copy-Methode zu bleiben, jedoch während des Kopiervorganges (in jedem Loop) dem Masterblatt einen anderen Namen zuzuweisen, bevor der Copy-Befehl ausgeführt wird. Am Ende der Routine kann der Originalname wieder zugewiesen werden und alles hat seine Ordnung. Vielleicht probierst Du das mal aus, ich werde es auch tun sobald ich Zeit dafür habe!
Anzeige
AW: Kopieren m. Spaltenformat
12.08.2005 09:35:14
KViertel
Hallo Bernhard,
Danke für den Hinweis. Ich habe inzwischen Deine Idee, die Orginaltabelle jeweils umzubenennen in die Tat umgesetzt. Im Zusammenhang mit den Programmabbrüchen hatte ich eine Ausdruckzähler eingebaut, um abschätzen zu können, was noch geht bis zum nächsten Abbruch. Den Wert dieses Zählers hänge ich vor dem Kopieren an und setze den Namen anschließend wieder zurück. Scheint alles zu klappen.
MfG. Klaus
AW: Kopieren m. Spaltenformat
bernhard_27
Hallo Klaus,
ich habe mich noch weitergehend informiert. Schau mal unter VBA-Hilfe, Stichwort "Codenamen - Eigenschaft" nach. Dort wird beschrieben, daß ein Ändern des Codenamens innerhalb einer Programmroutine nicht möglich ist und daß das Ändern des Registernamens nicht zur Änderung des Codenamens führt und umgekehrt. Ich bin mir nicht mehr sicher, ob meine Idee funktioniert. Würde es begrüßen, wenn Du Deinen Erfolg (oder Miß-) mitteilen würdest.
Mit welcher Excel-Version arbeitest Du, ich mit Excel / Office 2003 unter Windows 2000. Bei mir werden z.B. beim Kopieren die Codenamen am Ende hochgezählt, nicht jedoch verlängert. Außerdem wird bei jedem Kopiervorgang in irgendeinem Speicher (der sich programmtechnisch offenbar nicht löschen läßt) etwas abgelegt. Erfolgt dann der Programmabbruch, werden für jeden Kopiervorgang mehrere Temporärdateien auf dem Laufwerk C: abgelegt (in meinem Beispiel bei 112 Durchläufen bis zu 1950 Temp-Dateien!). Dann ist das natürlich kein Wunder, wenn soviel Datenmüll excelintern verwaltet wird und erst beim VBA-Programmabsturz ausgespuckt wird.
Ich bin auf Deine Lösung gespannt, melde Dich!
m.f.G. Bernhard
Anzeige
AW: Kopieren m. Spaltenformat
12.08.2005 14:09:58
Leo
Hi,
der Effekt mit den langen Codenamen trat nur in Excel 97 auf.
Der Hintergrund hier ist ein anderer, ist mir aber zu kompliziert zu erklären.
Der einfachste Weg, das zu umgehen, ist, nach x Kopiervorgängen speichern und schließen.
Das kann man ja ggf. automatisieren.
mfg Leo
AW: Kopieren m. Spaltenformat
12.08.2005 16:07:03
bernhard_27
Leo,
Du hast Recht bei Excel 2003 sieht das etwas anders aus, der Effekt ist aber der gleiche, es meldet sich früher oder später der Programmabbruch mit Laufzeitfehler 1004. Bei mir hat meine Idee nicht funktioniert, was ich inzwischen auch erwartet hatte.
Für Klaus habe ich aber noch einen weiteren Lösungsansatz, zu finden unter Microsoft Knowledgebase ID-Nr. 210684, und zwar die .add - Methode mit der Angabe des Typs als Excel-Vorlage (.xlt). Allerdings muß hier wie auch beim Vorschlag von Leo, die Datei zwischenzuspeichern, der erneute Dateiaufruf mit kompl. Laufwerk- und Pfadangabe erfolgen. Dies ist in meinem Fall kaum möglich, da wir in unserem Unternehmen mit verzweigten Servern und Pfadstrukturen arbeiten, die z.T. virtuell sind und zudem Dateizugriffe mitunter recht lange dauern.
Aber vielleicht läßt Du Dich, Leo, dazu erweichen, wenigstens ein paar Anhaltspunkte zu nennen, wo die Wurzel des Übels zu suchen ist. Vielleicht kommt ja doch etwas brauchbares dabei heraus, was anderen Forumsmitgliedern auch helfen könnte! Jedenfalls wäre ich dafür dankbar und warte natürlich auch auf das Ergebnis von Klaus.
Bernhard
Anzeige
AW: Kopieren m. Spaltenformat
12.08.2005 16:59:57
Leo
Hi,
es bringt nichts, das auszuführen, weil es keine Lösung für das Problem auf direktem Weg gibt. Es liegt an internen Daten, die auf eine unzulässige Länge anwachsen, aber nicht gelöscht werden dürfen.
mfg Leo
AW: Kopieren m. Spaltenformat
13.08.2005 17:16:37
KViertel
Hi,
nach der Umstellung meines Programms hat es sich so verändert, dass jetzt statt 105 DS 248 DS ausgedruckt wurden. Es sind also ca. 1 1/2 x mehr. D.h. ich ändere den Tabellenname und setze ihn nach der Kopie wieder zurück. Außerdem ergibt sich jeweils ein anderer Name.
Ich hatte es ja wie schon beschrieben mit der add-Methode versucht, dabei verursachten die vergebenen Namen Chaos. Es funktionierte deshalb garnicht.
MfG. Klaus
Anzeige
AW: Kopieren m. Spaltenformat
12.08.2005 17:29:13
bernhard_27
Hi,
wenn nun doch nur die sheets.add - Methode eine sinnvolle Lösung ist, wie kann man dann mit der Kopiermethode der Zellen incl. der Spalten-Formatierung in das hinzugefügte Blatt nun auch die Checkboxen rüberbringen? Diese werden nämlich nicht mitkopiert. (Erinnerung an meine vorhergehende Frage)
Wer hat eine sinnvolle Lösung?
AW: Kopieren m. Spaltenformat
12.08.2005 17:37:26
Leo
Hi,
kann ich nicht nachvollziehen, aber sieh mal hier:
Userbild
mfg Leo

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige