Workbooks.Opentext tut nicht was es soll

Bild

Betrifft: Workbooks.Opentext tut nicht was es soll
von: Stefan Ditscheid
Geschrieben am: 03.08.2015 20:31:07

Hallo,
ich beschäftige mich aktuell mit dem Import einer CSV Datei.
Das zeileweise Einlesen dauert zu lange weil die Datei mehr als 2000 Zeilen hat.
Des halb möchte ich Workbooks.Opentext nutzen und die Beschreibung dazu sieht so aus das das auch funktionieren sollte.
Ich nutze folgende Anweisung:
Workbooks.OpenText FileName:=mySource, DataType:=xlDelimited, Semicolon:=True
Die CSV Datei ist im Feld mySource hinterlegt und wird auch geöffnet.
Das Trennzeichen ";" wird aber nicht erkannt/beachtet und damit steht der komplette Datensatz in der ersten Spalte.
Nutze ich folgende Anweisung funktioniert es:
Workbooks.OpenText FileName:=mySource, DataType:=xlDelimited, local:=True
Laut Beschreibung von Microsoft (siehe hier: https://msdn.microsoft.com/de-de/library/office/Ff837097.aspx ) sollten beide Verfahren funktionieren.
Warum nehme ich nicht LOCAL:=TRUE ??
Die Lösung muss auf Rechnern mit verschiedenen Sprachversionen von Office/Windows funktionieren, auf die CSV Datei greifen aber alle diese Nutzer gleichermassen zu.
Wenn ich Local:=True einsetze verhält sich das Makro je nach Sprachversion/Land unterschiedlich und dann funktioniert die Lösung nicht auf allen Rechnern.
Hat jemand eine Idee wie ich die Lösung mit SEMICOLON:=TRUE zum laufen bekommen kann???
Gruss - Stefan

Bild

Betrifft: AW: Workbooks.Opentext tut nicht was es soll
von: Sepp
Geschrieben am: 03.08.2015 21:04:12
Hallo Stefan,
es gibt auch andere Wege, eine CSV einzulesen. Dabei kommt es aber auf den Aufbau der CSV's an, lade doch eine Beispieldatei hoch (in .txt umbenennen weil .csv mag die Forumssoftware nicht!), dann kann man sicher etwas machen.

Gruß Sepp


Bild

Betrifft: AW: Workbooks.Opentext tut nicht was es soll
von: Stefan Ditscheid
Geschrieben am: 04.08.2015 19:23:09
Hallo Sepp,
danke für Dein Angebot.
Ich habe auch schon zwei andere Lösungen ausprobiert die die Textdatei zeilenweise einlesen und dann in ein Tabellenblatt ablegen. Das hat auch gut funktioniert, wenn man mal von der Zeit absieht die es benötgt hat. Bei 500 Textzeilen mit jeweils 8 Spalten hat es entweder 2:30 oder 0:26 Minuten gedauert.
In Produktion muss ich aber eine Datei mit ca. 3.000 Zeilen und eine zweite mit ca. 20.000 Zeilen lesen. Selbst beim schnelleren Verfahren wären das ca. 20 Minuten Wartezeit - da erschlagen mich meine Anwender
WORKBOOKS.OPENTEXT braucht für die 500 Zeilen Datei max. 2 Sekunden und ist damit unschlagbar schneller.
Es ärgert mich auch das es nicht wie beschrieben genutzt werden kann - das ist mir bisher noch nicht passiert und deshalb suche ich den Fehler bei mir, scheinbar hat Microsoft hier aber wirklich irgendwas verbockt. Ich teste das heute abend auch noch mit Office 2013 um zu sehen ob es dort funktioniert.
Uwe hat vorgeschlagen in die Datei als erste Zeile "sep=;" aufzunehmen.
Ist mir völlig schleierhaft warum das helfen sollte, aber es klappt.
Man lernt eben nie aus.
Danke - Stefan

Bild

Betrifft: AW: Workbooks.Opentext tut nicht was es soll
von: Sepp
Geschrieben am: 04.08.2015 19:36:24
Hallo Stefan,
500 Zeile in 3 Minuten, dann ist etwas am Code faul! Ich hätte den Import per ADO realisiert, ist auch ungemein schnell und flexibel, aber du hast ja jetzt eine funktionierende Lösung.

Gruß Sepp


Bild

Betrifft: AW: Workbooks.Opentext tut nicht was es soll
von: Uwe Küstner
Geschrieben am: 04.08.2015 10:03:39
Hallo Stefan,
schreibe in die erste Zeile der CSV-Datei
sep=;
oder bennene die Dateiendung um von csv auf txt.
Gruß Uwe

Bild

Betrifft: AW: Workbooks.Opentext tut nicht was es soll
von: Stefan Ditscheid
Geschrieben am: 04.08.2015 19:14:13
Hallo Uwe,
habe beide Vorschläge mit folgendem Ergebnis getestet:
1) Umbenennung in .TXT
Hat zum gleichen Ergebnis geführt (also nicht funktioniert)
2) Erste Zeile "sep=;"
Egal ob mit Dateiendung CSV oder TXT erkennt WORKBOOKS.OPENTEXT diese erste Zeile und verwendet wie gewünscht das Semikolon als Trennzeichen. Diese erste Zeile wird auch nicht mit übernommen - ist also in der Exceltabelle nicht mehr zu sehen.
Auf diese Lösung wäre ich mit Sicherheit nie gekommen - das steht in keiner Beschreibung zu WORKBOOKS.OPENTEXT.
Tausend Dank
Stefan

Bild

Betrifft: AW: Workbooks.Opentext tut nicht was es soll
von: Sepp
Geschrieben am: 04.08.2015 19:19:36
Hallo Stefan,
mein Vorschlag, die CSV in TXT umzubenennen, bezog sich auf das Hochladen einer Beispieldatei und nicht für den Import!

Gruß Sepp


 Bild

Beiträge aus den Excel-Beispielen zum Thema "nervi versteht es einfach nicht"