Schnellste Art Daten via vba in Excel abzufüllen
03.11.2003 16:38:56
Yves
Sorry, meine Post ist ein bisschen lange geraten. Vorgeschichte kann sonst auch übersprungen werden...
Vorgeschichte
------------------------------------
Ich benutze Excel als Reporting Tool. Auf Excel greife ich via Visual Basic 6 mit Hilfe des Microsoft Excel 10 Object Library Objektes zu (Es können die Excel spezifischen vba Befehle benutzt werden). Ich lese also Daten aus einer Datenbank und fülle sie in vorbereitete ExcelSheets ab. Teilweise werden auf diese Arte mehrere 100 Zeilen mit mehreren Spalten geschreiben. Leider dauert dies sehr lange!
Nach einigem Grübeln habe ich rausgefunden, dass die folgenden Zeilen zu Beginn der Prozedur den Vorgang deutlich beschleunigen (Am Ende des Makros natürlich alles rückgangig machen...)
application.Visible = False
application.ScreenUpdating = False
application.Calculation = xlCalculationManual
Danach läuft das ganze schneller aber es dauert nir noch immer viel zu lange.
------------------------------------
Mein neuer Approach:
Ich hab dann rausgefunden, dass wenn ich einen String, worin die Spalten durch Tabulator und die Zeilen durch chr(13) & chr(10) getrennt sind, einfüge, das ganze viel schneller läuft. Ich habe in der Prozedur den String in die zwischenablage eingefügt und diesen dann via paste in die Tabelle geschrieben. Dieser wird dann ab der aktiven Zelle eingefügt. Falls ich den String mit cells(y,x).value einfüge, landet der ganze text, inkl Steuerzeichen in der Zelle y,x.
Als ich diese Methode an meinem vorbereiteten Sheet testete, erschienen die Texte teilweise in den falschen Zellen.
Ich habe dann festgestellt, dass es daran liegt, dass ich teilweise Zellen verbunden habe (Zellen markieren -> Zellen formatieren/Ausrichtung -> Zellen verbinden).
Ich habe dann einmal eine Zeile mit verbunden Zellen in einen Texteditor kopiert. Angenommen die Zellen A,B und C sind verbunden und den Wert "Test" ist gesetzt, erscheint im Editor "Test" gefolgt von 2 Tabulatoren. Falls ich dies vom Editor zurück in die verbunden Zellen kopiere, wird die Verbindung aufgelöst und der Text steht in Zelle A.
Nun also meine Fragen:
1. Ist es möglich aus einem Texeditor via Zwischenablage Text in verbundene Zellen zu kopieren, ohne die Verbindung aufzuheben. Falls ja, wie?
2. Hat jemand noch weitere tricks wie
application.Visible = False
application.ScreenUpdating = False
application.Calculation = xlCalculationManual
auf lager?
3. Falls jemand änliche Erfahrungen gemacht hat und eine gute Lösung gefunden hat, wäre ich natürlich für Infos dankbar.
Danke und Gruss
Yves