Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1660to1664
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

CSV Datei richtig importieren

CSV Datei richtig importieren
28.11.2018 12:02:12
Peter
Hallo Zusammen,
eine CSV Datei wird mit einem Makro in eine Excel tabelle importiert.
Leider werden die Werte in den Spalten C / D / E nicht als Zahlenwert eingetragen.
Mit einen anderen Makro möchte ich die Werte in einen Zahlenwert formatieren.
Mit der Funktion Suche und Ersetzen geht dies. Ich habe die mit dem Makrorekorder aufgenommen.
Nach dem ich dies Makro gestartet habe werden die Werte nicht um formatiert.
Vieleicht kann einer mal drüber schauen und mir hier helfen.
1. Zeil Datei
https://www.herber.de/bbs/user/125716.xlsm
2. Quelle
https://www.herber.de/bbs/user/125717.txt
Vielen Dank
Peter (hpo)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Datei richtig importieren
28.11.2018 12:57:35
Daniel
Hi
das Problem ist dass Excel und VBA oft englisch miteinander Reden, während Excel mit dem Anwender an gleicher Stelle Landessprache spricht.
Das führt dann dazu, dass der Recordercode dann nicht passt.
wenn du beispielsweise eine als Text formatierte Zahl in eine echte Zahl wandeln willst und dass mit der Funktion ersetzen machen willst, dann musst du bedenken, dass Excel einen Wert, der von VBA kommt nur dann als Zahl interpretiert wird, wenn dieser im Amerikantischen Format geschrieben ist, dh mit Punkt als Dezimalzeichen.
dh du musst beim REPLACE in VBA das Komma durch einen Punkt ersetzen, während du beim ERSETZEN von Hand das Komma durch ein Komma ersetzt.
Gruß Daniel
Anzeige
AW: CSV Datei richtig importieren
28.11.2018 14:01:19
Peter
Hallo Daniel,
vielen Dankt für Deine Rückmeldung.
Weis Du vieleicht eine andere Funktion, mit der ich die Textwerte in Zahlenwerte ändere?
Probiert habe ich auch bereits folgendes: Textwert * 1 dies funktioniert auch soweit.
Dies habe ich mit einer Schleife durch alle Cellen gemacht. Dauert aber seher lange bei ca. 3000 Celllen.
Viele Grüße
Peter (hpo)
TextZahlen in Zahlen umwandeln
28.11.2018 18:30:06
Daniel
Hi
das geht auch einfacher:
1. leere Zelle kopieren
2. in den umzuwandelnden Zellen den Wert einfügen mit der Einstellung: Vorgang=Addieren.
in VBA:
Cells.SpecialCells(xlcelltypelastcell).Offset(0, 1).Copy
Range(...).PasteSpecial xlpastevalues, Operation:=xladd
aber auch hier gilt:
wenn du das von Hand machst, werden Texte mit Dezimal-Komma in Zahlen gewandelt.
wenn du das von VBA ausführen lässt, werden Texte mit Dezimal-Punkt in Zahlen gewandelt.
Gruß Daniel
Anzeige
AW: CSV Datei richtig importieren
28.11.2018 15:36:59
PeterK
Hallo
Da Du die Daten im englischen Format hast, kannst Du Excel auch einmal kurzfristig umschalten. Da dies aber nur für den ersten Aufruf gilt (d.h. beim aktualisieren der Query wären wieder die "normalen" Trennzeichen gültig) lösche ich die Query (Vorsicht: ich lösche ALLE)

Sub Test()
ActiveWorkbook.Worksheets.Add
Application.UseSystemSeparators = False
Application.ThousandsSeparator = ","
Application.DecimalSeparator = "."
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Users\Documents\Herber\125717.txt", _
Destination:=Range("$A$1"))
.Name = "125717.txt"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = True
.PreserveFormatting = False
.RefreshOnFileOpen = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Dim qt As QueryTable
For Each qt In ActiveSheet.QueryTables
If qt.Refreshing Then qt.CancelRefresh
qt.Delete
Next
Application.ThousandsSeparator = "."
Application.DecimalSeparator = ","
Application.UseSystemSeparators = True
Columns("A:A").Delete Shift:=xlToLeft
End Sub

Anzeige
AW: CSV Datei richtig importieren
28.11.2018 16:16:21
Peter
Hallo PeterK
Vielen Dank macht genau das was ich möchte.
Super ;)
Viele Grüße
Peter (Ihpo)
AW: CSV Datei richtig importieren
28.11.2018 18:43:34
Daniel
Hi
dazu muss man aber nicht ins System eingreifen.
man kann das auch beschränkt für den Import tun, um hierfür die Werte richtig zu importieren.
von Hand geht das im Schritt 3 des Assistenten unter WEITERE
im Makro dann mit diesen beiden Optionen, welche vom Recorder nur dann aufgezeichnet werden, wenn man sie abweichen von der Landestypischen Schreibweise abändert:

With AciveSheet.QueryTables.Add(...)
.Name = ...
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
End With

Gruß Daniel
Anzeige
AW: CSV Datei richtig importieren
29.11.2018 11:24:28
Peter
Hallo Günter, hallo Daniel
Vielen Dank für Eure Beiträge.
Komme mit der Lösung von PeterK sehr gut zurecht.
Nochmals vielen Dank und viele Grüße
Peter (hpo)

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige