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

Schnellste Art Daten via vba in Excel abzufüllen

Schnellste Art Daten via vba in Excel abzufüllen
03.11.2003 16:38:56
Yves
Hallo

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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Copyfromrecordset
03.11.2003 17:01:06
Nike
Hi,

wenn du Access als DB Backend hast, dann such mal nach copyfromrecordset

Bye

Nike
AW: Copyfromrecordset
04.11.2003 10:23:23
Yves
Danke für den Tip.
Leider kann ich den Recordset nicht 1:1 in die Tabelle schreiben, da ich eine Struktur aus der DB lese, welche ich zuerst in VB untersuchen muss um dann nur bestimmte Teile in die Tabelle zu schreiben.

Worauf ich gerne eine Antwort hätte:
Ist es möglich aus einem Texeditor Text via Zwischenablage in verbundene Zellen zu kopieren (1 Zeile, mehrere Spalten), ohne die Verbindung aufzuheben. Falls ja, wie?

Meine Erfahrungen:
Wenn ich auf einer Zeile die Zellen A,B,C verbinde, und ich anschliessend Text via Zwischenablage aus z.B. aus einem Editor einfügen, wird die Verbidung aufgehoben. Der Text befindet sich dann in Zelle A.
Anzeige
AW: Copyfromrecordset
04.11.2003 10:51:21
Nike
Hi,

...da ich eine Struktur aus der DB lese...
Dann würde ich dir empfehlen eine Abfrage in deiner DB anzulegen
und diese dann von Excel aus auszuwerten.
Wird 1000Mal schneller sein, als die Auswerterei in Excel/VB ;-)

Das mit der Zweischenablage kann ich so nicht nachvollziehen
(bei mir bleibt die Zelle verbunden), vielleicht könntest du
ja mal den Code den du dafür verwendest posten...

Bye

Nike
AW: Copyfromrecordset
04.11.2003 11:16:31
Yves
Danke für deine Hilfe, aber ich verstehe nicht ganz was 1000mal schneller sein soll.
Ich setzte in VB ein Statement ab, gehe durch die Struktur durch und fülle die entsprechnden Daten in einen Type Array. Diese schreibe ich dann in Excel.
Fast die ganze Zeit geht fürs Schreiben ins Excel drauf (cells(y,x).value=). Test haben gezeigt, dass es keine Rolle spielt, ob die Arbeit in einem Makro in Excel oder einer Prozedur in VB ausgeführt wird.

nun aber zurück zur Zwischenablage.
Zellen A,B,C jeweils auf den ersten 3 Zeilen verbinden (nur spalten verbinden, nicht zeilen)

wie kann ich nun aus einem texteditor
test1
test2
test3
einfügen.

wenn ich zelle1 anklicke und einfügen wählen verweigert excel das einfügen. wenn ich manuell etwas in A1 einfüge und in den Texteditor kopiere, erscheint dort der text gefolgt von 2 tabs (aufgrund der verbunden zellen). wenn ich diesen text wiederum in excel einfüge, landet der text in zelle A1 und die verbindung wird aufgelöst. wenn ich für dieses problem eine lösung finde, kann ich die daten x mal schneller als mit der cells(y,x).value methode in excel schreiben.
Anzeige
AW: Copyfromrecordset
04.11.2003 14:47:50
Nike
Hi,

>aber ich verstehe nicht ganz was 1000mal schneller sein soll.
>Fast die ganze Zeit geht fürs Schreiben ins Excel drauf (cells(y,x).value=).

Tja und genau das wird durch ein copyfromrecordset xFach beschleunigt...

Ansonsten mal den Listentrenner über Start/Einstellungen/Systemsteuerung/Ländereinstellungen/Zahlen
verändern

Bye

Nike

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige