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

Text als Text importieren

Text als Text importieren
Harry
Wie kann ich sicherstellen, das ich Daten,(Zahlen und Worte) aus Textdateien "nur als Text" ihn mit einem Makro in Excel importiere.
Meine Versuche sind hier gescheitert. Weil die Importierte Datei aus 12.000 ; 12000 macht aber ich brauche den Punkt, um ihn später durch ein Komma zu Ersetzen.
Private Sub Daten_importieren_Click()
Dim strFilename As String
Dim Pfad$
Dim dtmFaktDatum As String
Dim lngBankBCNR As String
Dim strBankName As String
Dim strBankOrt As String
Dim lngI As Long 'Zähler
strFilename = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
If strFilename  "Falsch" Then
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & strFilename, Destination:=Range("A10" _
))
.Name = ""
.FieldNames = True
.RowNumbers = True
.FillAdjacentFormulas = True
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  _
1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=True
End With
End If
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Text als Text importieren
01.11.2011 14:30:39
fcs
Hallo Harry,
probier es mal mit
            .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2)

Kann aber sein, dass du vor dem Ersetzen von Punkt durch Komma das Format der Spalte auf Standard oder ein Zahlenformat ändern muss.
Gruß
Franz
AW: Text als Text importieren
01.11.2011 20:21:33
Harry
Danke Franz,
was genau macht die Änderung? Es funktioniert. Danke Harry
AW: Text als Text importieren
02.11.2011 09:27:10
fcs
Hallo Harry,
die Änderung macht halt das was du willst. Der Parameter legt fest wie die Inhate der Spalten importiert werden sollen.
Name           Wert Beschreibung
xlDMYFormat      4  TMJ-Datumsformat
xlDYMFormat      7  TJM-Datumsformat
xlEMDFormat      10 ZMT-Datumsformat
xlGeneralFormat  1  Allgemein
xlMDYFormat      3  MTJ-Datumsformat
xlMYDFormat      6  MJT-Datumsformat
xlSkipColumn     9  Spalte wird nicht analysiert
xlTextFormat     2  Text
xlYDMFormat      8  JTM-Datumsformat
xlYMDFormat      5  JMT-Datumsformat

Bei Wert 1 interpretiert Excel die Daten.
Alles was nach Zahl oder Datum aussieht wird in einen nummerischen Wert bzw. das excelinterne Datum umgewandelt.
Übrigens: Auch der VBA-Editor hat eine Hilfe-Funktion.
Schaue dort mal unter "TextFileColumnDataTypes" oder "Workbooks.Opentext".
Gruß
Franz
Anzeige
AW: Text als Text importieren
02.11.2011 09:42:34
Harry
Danke
AW: Text als Text importieren
03.11.2011 08:21:28
Harry
Hallo Franz,
meine Daten werden alle sauber als Text importiert, wenn ich zu Fuß den Punkt durch Komma ersetze ist alles Ok, aber mit dem aufgezeichnetem Makro geht es nicht.
Das ist sehr seltsam.
Danke Harry
Private Sub Daten_importieren_Click()
Dim strFilename As String
Dim Pfad$
Dim dtmFaktDatum As String
Dim lngBankBCNR As String
Dim strBankName As String
Dim strBankOrt As String
Dim lngI As Long 'Zähler
strFilename = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
If strFilename  "Falsch" Then
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & strFilename, Destination:=Range("A10" _
))
.Name = ""
.FieldNames = True
.RowNumbers = True
.FillAdjacentFormulas = True
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
2, 2, 2, 2, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=True
End With
End If
End Sub


Private Sub Punkt_ersetzen_durch_Komma_Click()
Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

Anzeige
AW: Text als Text importieren
03.11.2011 09:48:56
fcs
Hallo Harry,
wenn deine Zahlen in der Textdatei im Deutschen-Format (Dezimalzeichen=",", 1000er-Trennzeichen = "." vorliegen, dann hast du jetzt 2 Möglichkeiten.
A: Import-Makro apassen und Trennzeichen vorgeben
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
1, 1, 1, 1, 1)
.TextFileDecimalSeparator = ","
.TextFileThousandsSeparator = "."

Das Problem ist, dass beim Import via VBA standardmäßig Daten aus der Sicht des US-Formats interpretiert werden.
B: Daten als Text importieren, dann Zahlen umwandeln.
Hier muss du dein Makro anpassen.
1. Zahlenformat im relevanten Zellbereich ändern von Text in gewünschtes Zahlenformat
2. Punkt in den Zahlen durch Leerstring ersetzen
3. Zahleninhalte mit 1 multiplizieren, damit Zahlen-Texte kleiner 1000 in Zahlen umgewandelt werden.
Private Sub Punkt_ersetzen_durch_Komma_Click()
Dim Zelle As Range
Application.ScreenUpdating = False
With ActiveSheet
With .Range(.Cells(10, 1), .Cells.SpecialCells(xlCellTypeLastCell))
.NumberFormat = "#,##0" 'oder "#,##0.00" wenn mit Nachkommastellen
.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
For Each Zelle In .Cells
If IsNumeric(Zelle.Text) Then Zelle.Value = Zelle.Value * 1
Next
End With
End With
Application.ScreenUpdating = True
End Sub

Gruß
Franz
Anzeige
AW: Text als Text importieren
03.11.2011 11:55:46
Harry
Hallo Franz,
Ich habe mal eine Datei hochgeladen, vieleicht kannst du es mal testen.
Bei mir geht es nicht.
Danke Harry
https://www.herber.de/bbs/user/77336.txt
AW: Text als Text importieren
03.11.2011 22:52:50
fcs
Hallo Harry,
deine Text-Datei enthält Zahlen im US-Format (Dezimalzeichen="."). D.h. dass der Import entsprechend angepasst werden muss.
Leider führt die Funktion Suchen/Ersetzen von "." durch "," hier nicht zum Ziel. Wenn die Zahlen auch noch speziell formatiert werden sollen, dann müssen die Spalten mit den Zahlen individuell formatiert und angepasst werden.
Gruß
Franz
Textdatei mit angepasstem Code für das umformatieren. Die Daten werden als Text importiert und dann umformatiert.
https://www.herber.de/bbs/user/77349.txt
Anzeige
AW: Text als Text importieren
04.11.2011 07:52:08
Harry
Hallo Franz, funktioniert Prima.
Danke Harry

8 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige