Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1960to1964
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
Inhaltsverzeichnis

TXT/CSV einlesen, wo ist der Sinn im Verh. zum öffnen?

TXT/CSV einlesen, wo ist der Sinn im Verh. zum öffnen?
05.02.2024 23:33:33
Frank Dreier
Hallo Leute,

ja, ich komme heute nicht zur Ruhe.
Ich habe ein gutes Skript gefunden (ohne Loop funktion) um eine 2,5 MB starke TXT Datei einzulesen ohne diese öffnen zu müssen.
Das funktioniert auch und is zügig, allerdings dauert das ironischerweise 0,1 Sekunde länger als wenn ich die Datei ganz normal mit

Workbooks.OpenText Filename:="C:\test.txt", _

DataType:=xlDelimited, Semicolon:=True, Local:=True


und sogar mit

    Windows("test.txt").Activate

Application.DisplayAlerts = False
Application.CutCopyMode = False
ActiveWindow.Close
Application.DisplayAlerts = True


anschließend noch schließe!

Frage: Kann es sein, dass das Einlesen in den internen Speicher bzw. "einlesen" in ein Tabellenblatt nur dann Sinn macht wenn man z.B. einzelne Datenblöcke aus der Datei sucht / erneuern will und nicht den gesamten Dateninhalt einlesen möchte? Ich sehe bei der Einlese-Methode einfach keinen Vorteil gegenüber dem ganz normalen Öffnen der Datei. Das Öffnen und Schließen kann man ja mit Application.DisplayAlerts = False ganz entspannt ausblenden. Also auch esthetisch macht es keinen Sinn diese Daten einzulesen - wie gesagt, sofern man alle Daten aus der Datei benötigt.

Könnt Ihr mich aufklären?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TXT/CSV einlesen, wo ist der Sinn im Verh. zum öffnen?
06.02.2024 00:00:08
onur
"0,1 Sekunde länger" wird wohl am Code liegen, den nur du kennst.
"ohne diese öffnen zu müssen" ist Quatsch, die Datei wird im Hintergrund geöffnet und geschlossen, nur du bekommst es nicht mit.
"Das Öffnen und Schließen kann man ja mit Application.DisplayAlerts = False ganz entspannt ausblenden" ??? Wieso glaubst du sowas? Ausgeblendet werden nur, wie der Name schon sagt, Warnmeldungen.
"allerdings dauert das ironischerweise 0,1 Sekunde länger " ? Na und? Fehlen dir diese 0,1 Sekunden irgendwo ?
AW: TXT/CSV einlesen, wo ist der Sinn im Verh. zum öffnen?
06.02.2024 10:07:03
Yal
Hallo Frank,

vielleicht sollte man die Basics nochmal erfrischen: ab dem Moment, wo ein Datei gelesen wird, wird diese vollständig "geöffnet". Es spielt keine Rolle, wie es gelesen wird. Es liegt daran, dass Festplatten keine "Computer" sind und können eine Datei nur ganz bereitstellen.

Es gibt nur eine Besonderheit bei Textdateien: diese bekommen keinen "Reservierungsmarkierung", spricht eine Vermerk, dass die Datei bereit in Verarbeitung und somit nicht für andere Zugriff zur Verfügung steht. Es beschleunigt die Sache, weil die Datei nach der Verarbeitung nicht "zurückgegeben" werden müssen, spricht die Reservierung wieder zurücksetzen.

Also eine Datei wird immer, egal wie, vollständig gelesen und übergeben. Nun haben unterschiedliche Verarbeitungen natürlich unterschiedliche Vorgehensweise und somit andere Verarbeitungsgeschwindigkeit. Bei Excel bildet die Übergabe der Daten in einer anzeigefähige Form die grösste Aufwand (Rechner mit guter Grafikkarte sind dann hier schneller). Aber hier kann man nicht pauschal sagen, dass je nach Fälle, immer mit der eine Methode schneller als mit einer anderen. Im Allgemein ist diese Zeitgewinn eher ein Randthema. Wesentliche Beschleuniger sind eher, ob die Datei lokal oder übers Netz abgefragt wird. Ob es sich lohnt, eine Datei zuerst lokal zu kopieren, verarbeiten und ins Netz zurückkopieren, muss pro Fälle begutachtet werden (meistens nicht).

Nun Read only ins Excel: hier hat sich Microsoft viele Gedanken gemacht, um die eine einzige Standard aufzubauen, die sowohl für Datei, Datenbank oder sonstige Fernabfragen gelten soll. Das Ergebnis ist Power Query (PQ). Grob gesagt, ist das Ding so aufgebaut, dass der grösste Verarbeitungsanteil wie möglich an der Quelle übergeben wird. Es ist besonders bei Datenbank relevant: nicht die Daten der letzten 2 Jahren übers Netz schaufeln, wenn man nur die Daten von gestern braucht.

Bei Textdateien ist es natürlich sehr abgeschwächt, weil alles "gelesen" werden muss, aber PQ sortiert sofort soviel wie möglich weg. Es bleibt vom gelesenen nur was man bestellt hat: nur die Zeile mit Datum x, und davon nur die Spalten 4, 6, 8. Es ist daher nicht schneller beim Lesen, aber anschliessend beim Verarbeiten.

Alles zusammen: wenn eine Datei nur gelesen und nicht zurückgeschrieben werden muss, ist diese Aktion einmalig. Dann spielt 0,1 Sek keine Rolle. Die anschliessende Verarbeitung müssen eher unter die Lupe genommen werden. Ein 0,1 ms auf einer Berechnung, die auf 10 Mio Datensätze und das 10 mal innerhalb von 10 Minuten sattfindet, müsste eher optimiert werden. Und wenn von diesen 10 Mio Datensätze 9 Mio vom Anfang an nicht relevant sind --> Power Query.

VG
Yal


Anzeige
Danke für die Erklärung (o.T.)
06.02.2024 12:32:10
Frank Dreier
y
AW: TXT/CSV einlesen, wo ist der Sinn im Verh. zum öffnen?
06.02.2024 00:22:58
Frank Dreier
Na ich fand es nur merkwürdig, dass die gleiche Datenmenge über das simple öffnen genausolange (oder sogar minimal kürzer) dauert als über das Einlesen.
Das Einlesen hat aber doch einen (Geschwindigkeits-)Vortei wenn ich recht überlege:
Du kannst beim Einlesen festlegen wieviele Daten bis wohin ersetzt/eingelesen werden sollen,- alte Daten bleiben dann einfach bestehen und werden nicht mit eingelesen. -Das funktioniert beim reinen Öffnen der Datei nicht. Da kann man zwar die ganze Operation auch durchführen (z.B. nur aktuelle, noch nicht vorhandene Daten einfügen, z.B. in Tabelle 2 einfügen,) aber Du musst dafür die komplette Datei öffnen in Excel - und das kann dann länger dauern.



Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige