Anzeige
Archiv - Navigation
1900to1904
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

Nach Workbooks.OpenText *.csv als Text?

Nach Workbooks.OpenText *.csv als Text?
10.10.2022 08:13:22
Ben.Blake
Leider ist die Betreffzeile zu kurz, richtig soll es heißen:
Nach Workbooks.OpenText werden csv's nur noch als Text geöffnet?
Hallo liebe Leute, ich hab mal wieder ein Problem...
Ich lade per Makro Daten aus csv-Dateien. Da dort einige Formatbesonderheiten drin sind (z.B. Hex-Zahlen, die Excel umbaut, wenn es gerade paßt) mit Workbook.OpenText:

Workbooks.OpenText Filename:=TFPath, StartRow:=2, DataType:=xlDelimited, Semicolon:=True, local:=True, _
FieldInfo:=Array(Array(1, xlGeneralFormat), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, xlTextFormat))
Leider ist es nun so, daß danach plötzlich alle gleichartigen Dateien bis zum Excel-Neustart nur noch als Text ohne Berücksichtigung der Trennzeichen geladen werden, andere csv's werden geöffnet wie immer. Die betreffenden csv-Dateien haben in der ersten Zeile ein "sep=;" stehen - das kommt so aus Geräten und läßt sich nicht ändern. Kann das der Grund sein?
Ich dachte erst, daß es sowas wie eine stillschweigende Modusumstellung wäre und einfach mal im Script im Anschluß die Datei nochmal mit .Open geöffnet, da macht Excel dann aber bereits den gleichen Fehler.
Ich hab sonst nichts gefunden - Ihr seid also meine letzte Hoffnung ;)
Vielen Dank schonmal!
Gruß
Ben

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
*Nachobenschieb* - vollständiger Betreff im Text
10.10.2022 13:17:30
Ben.Blake
Ich hab mittlerweile getestet, ob es vielleicht daran liegt, daß ich in der .OpenText nur 6 Spalten (von 7) festgelegt habe - das scheint es aber auch nicht zu sein...
Ich weiß nicht, ob ich es heute noch schaffe, aber ich liefere noch eine Beispieldatei nach...
AW: Nach Workbooks.OpenText *.csv als Text?
10.10.2022 14:51:55
Ben.Blake
Hallo,
ich hab jetzt ein paar Testdateien zusammengestellt.
https://www.herber.de/bbs/user/155588.zip
Importiert werden soll die Test1*.csv
Nachdem das geschehen ist, wird die Testprotokoll.csv korrekt geöffnet, die drei Test#*.csv aber nicht...
AW: Nach Workbooks.OpenText *.csv als Text?
10.10.2022 18:38:41
Yal
Hallo Ben,
also... Datei heruntergealden, extrahiert geöffnet, Makro getartet mit verschiedenen Dateien. Ich sehe keinen Fehler. Oder vielleicht sehe ich nicht das, was als fehlerhaft bezeichnet wurde. Da müsstest Du deine Beschreibung von was richtig und was falsch noch einmal justieren.
Was sollte tatsächlich rauskommen? Ich meine, wenn Du einen CSV mit Workbooks.OpenText anstatt Worksbooks.Open, dann wird die Datei als Text geöffnet. It's not a bug, it's a feature.
VG
Yal
Anzeige
AW: Nach Workbooks.OpenText *.csv als Text?
11.10.2022 10:54:43
Ben.Blake
Der öffnet nach dem Makro die csv-Dateien im Tabellenformat? Dann läge es an unseren Rechnern/BS/Office...
Ich hab es jetzt neben dem Office 365 auch auf Office 2016 getestet und zumindest dort ist es das gleiche.
Vielleicht hab ich mich ja auch mißverständlich ausgedrückt...
der normale Prozess ist, daß Dateien von Typ Test1 per Makro importiert werden mit .OpenText (damit die Hex-Werte korrekt importiert werden durch Formatvorgaben)
Wenn danach die Dateien Test1-3 manuell geöffnet werden (oder aus dem Dateibrowser oder auch mit .Open), dann werden dort die Trennzeichen nicht beachtet und alles in die erste Spalte eingetragen.
Die Testprotokoll.csv wird aber ganz normal als Tabelle geöffnet.
Erst, wenn Excel geschlossen und wieder geöffnet wird, dann werden die Test1-3 wieder als Tabelle geöffnet, nur leider zerschießt es da eben die Hex-Zahlen...
Irgendwie scheint da mit .OpenText etwas umgestellt zu werden. Mir ist auch nicht klar, wie er bei den Test2 und 3 erkennt, daß die Test1 gehören... erstellt/bearbeitet hab ich alle mit Notepad++
Anzeige
AW: Nach Workbooks.OpenText *.csv als Text?
11.10.2022 10:56:15
Ben.Blake
Hatte vergessen, den Haken "noch offen" zu aktivieren
AW: Nach Workbooks.OpenText *.csv als Text?
11.10.2022 21:47:40
Oberschlumpf
und ich glaube, ihr - du allen voran - redet noch immer aneinander vorbei...
zeig doch bitte mal eine Datei...
...mit Daten aus der CSV-Datei, wobei die Daten - genau so!!! - gezeigt werden, wie in CSV-Datei gespeichert sind
...mit Daten, "nach deiner gewünschten Umwandlung" - genau so!!!! - wie die Daten aussehen sollen
bisher beshcreibst du immer nur, was wann wie wo warum passieren soll
zeig das ganze bitte mal
AW: Nach Workbooks.OpenText *.csv als Text?
12.10.2022 09:05:32
Ben.Blake
Jetzt hab ich das mal als Screenshots mit Erklärungen hochgeladen - vielleicht wird es damit ja verständlich, was ich meine:
Userbild
Die Testimport.xlsm mit angehängtem Workbook.Open:
https://www.herber.de/bbs/user/155610.xlsm
Anzeige
AW: Nach Workbooks.OpenText *.csv als Text?
12.10.2022 12:14:59
Ben.Blake
ein Kollege hatte noch die Idee, daß man die Datei als Workaround in einen anderen Dateityp umbenennen kann. Hab ich probiert, hat nicht funktioniert. Auch, diese Datei auf einem anderen Laufwerk (normal über Netzwerk, stattdessen von lokalem Laufwerk) zu importieren hat nichts gebracht. Ich weiß nicht, woher Excel die Unterscheidung treffen kann. Metadaten scheint es bei csvs nicht großartig zu geben und die Dateieigenschaften unterscheiden sich nicht...
AW: Nach Workbooks.OpenText *.csv als Text?
12.10.2022 12:56:53
Heli
Hi,
schau' Dir mal an was jeweils im "Text in Spalten"-Assistent nach einem Import drin steht - meiner Erfahrung nach "merkt" sich Excel die erste Spezifikation und versucht diese dann auf alle weiteren Textimporte anzuwenden. Wenn ich mich recht erinnere wird dann auch das Trennzeichen (Semikolon) ignoriert und ein Komma (weil CSV als Comma Separated Values interpretiert wird) erwartet.
Mein Workaround: alle Dateien nicht als .csv sondern als .txt importieren oder die Daten über ein Array importieren.
VG, Heli
Anzeige
AW: Nach Workbooks.OpenText *.csv als Text?
17.10.2022 20:34:25
Ben.Blake
Hat nicht funktioniert, das Problem tritt auch dann auf. (War es ja auch schon, wenn
ich die Dateien in *.xxx umbenannt habe) Scheint ein Excel-Bug zu sein - Kommata als Trennzeichen sind jetzt nicht so der Brüller für Sprachen, die das Komma als Dezimaltrennzeichen nutzen...
Trotzdem Danke.
Mein Workaround ist jetzt, die Datei als Text zeilenweise zu importieren und dann die Spalten zu trennen, s. https://www.herber.de/forum/messages/1903305.html

Option Explicit
Option Base 1
Public Function OpenTxtFile(TFPath As String, Optional StrtLn As Long = 1, Optional sepStr As String = ";")
'Öffnet Text-Format-Datei, beginnend bei StrtLn und teilt die Daten entsprechend sepStr zur Umgehung des .OpenText-Bugs
'setzt Option Base 1 voraus
Dim strLn As String, CntL As Long
Dim RowArr() As String, ColArr() As String
Dim TMPArr() As String
Dim i&, j&, b As Long
Dim cCols As Integer
Open TFPath For Input As #1
Do While Not EOF(1)
CntL = CntL + 1
ReDim Preserve ColArr(CntL)
Line Input #1, strLn 'Zeilenweise einlesen
ColArr(CntL) = strLn 'Zeile einem SpaltenArray zuweisen
Loop
Close #1
For i = 1 To UBound(ColArr, 1)
cCols = UBound(Split(ColArr(i), sepStr), 1) + 1 'Achtung, Split gibt immer Array mit Base 0 aus!!!
b = WorksheetFunction.Max(b, cCols)
Next i
ReDim TMPArr(UBound(ColArr, 1) - (StrtLn - 1), b)
For i = 1 To UBound(ColArr, 1) - (StrtLn - 1)
RowArr = Split(ColArr(i + (StrtLn - 1)), sepStr)
For j = 1 To UBound(RowArr, 1) + 1 'wg. Split-Array Base 0
TMPArr(i, j) = RowArr(j - 1)
Next j
Next i
OpenTxtFile = TMPArr
End Function

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige