Import TAB-separierter Textdatei

02/01/2010 - 16:02 von Peter Lederer | Report spam
Hallo zusammen,

ich exportiere aus einer anderen Anwendung Wetterdaten in eine
TAB-separierte Textdatei. Die enthaltenen Daten, wie z.B. Temperaturwerte,
haben als Dezimaltrenner einen Punkt.

Z.Zt. öffne ich die Textdatei mit einem Editor, ersetze alle Punkte durch
Kommas und kopiere die Daten dann in ein Workbook. In diesem Workbook sind,
neben dem Sheet ("Uebersicht") mit den kopierten Daten noch weitere Sheets,
die jeweils eine Grafik enthalten. Die Grafiken nehmen sich die Daten aus
dem Sheet "Uebersicht".

Mein Ziel ist es, das Ersetzen der Punkte durch Kommas und den Import der
Daten zu automatisieren. Dabei soll der erste Datensatz im Sheet
"Uebersicht" in A2 beginnen.

Versucht habe ich es bereits mit einem leicht abgweandelten Code aus dem
Netz:

Sub Import_Wetter()
Dim Arr
Dim Datei
Dim FSO
Dim L As Long
Dim Tmp As Variant
Dim vnt_Ausgabe As Variant
Dim I As Integer
Dim Str_String As String
'#####################
'Textdatei auslesen
Set FSO = CreateObject("Scripting.FilesystemObject")
Set Datei = FSO.OpentextFile("C:\Test.txt") 'Anpassen
Str_String = Datei.readall
Datei.Close

Str_String = Replace(Str_String, ".", ",") 'Das ist von mir

Arr = Split(Str_String, vbCrLf) 'Nach Datensàtzen splitten
ReDim vnt_Ausgabe(UBound(Arr), 200) '200 Spalten reichen ???
For L = 0 To UBound(Arr)
Tmp = Split(Arr(L), " ") 'Jeden Datensatz nach Werten splitten
For I = 0 To UBound(Tmp)
vnt_Ausgabe(L, I) = Tmp(I) 'Jeden Wert in das Array vnt_Ausgabe
umschaufeln
Next
Next
'Ausgeben. Anpassen.
Sheets("Uebersicht").Range("A2").Resize(UBound(vnt_Ausgabe) + 1,
UBound(vnt_Ausgabe, 2)) = vnt_Ausgabe
End Sub

Da ich den Code ab dem Split noch nicht ganz verstanden habe, bràuchte ich
mal eine Hilfestellung. Wenn ich es richtig verstehe, müßte ich in der
Zeile Tmp = Split(Arr(L), " ") meine Daten nicht nach dem Kriterium " "
splitten lassen, sondern nach TAB. Wie wird das an dieser Stelle
ausgedrückt? Ist die von mir eingefügte Codezeile mit dem Replace-Befehl
korrekt?

Vielen Dank schon mal für Eure Unterstützung

Grüße
Peter
 

Lesen sie die antworten

#1 Thomas Ramel
02/01/2010 - 18:43 | Warnen spam
Grüezi Peter

Peter Lederer schrieb am 02.01.2010

ich exportiere aus einer anderen Anwendung Wetterdaten in eine
TAB-separierte Textdatei. Die enthaltenen Daten, wie z.B. Temperaturwerte,
haben als Dezimaltrenner einen Punkt.

Z.Zt. öffne ich die Textdatei mit einem Editor, ersetze alle Punkte durch
Kommas und kopiere die Daten dann in ein Workbook. In diesem Workbook sind,
neben dem Sheet ("Uebersicht") mit den kopierten Daten noch weitere Sheets,
die jeweils eine Grafik enthalten. Die Grafiken nehmen sich die Daten aus
dem Sheet "Uebersicht".

Mein Ziel ist es, das Ersetzen der Punkte durch Kommas und den Import der
Daten zu automatisieren. Dabei soll der erste Datensatz im Sheet
"Uebersicht" in A2 beginnen.



Erstelle doch in einem Dummy-Tabellenblatt eine Abfrage auf diese
Text-Datei und importiere die Daten über den Abfrage_Assistenten.
Dabei kannst Du im dritten Schritt des Assistenten auch das alternative
Dezimaltrennzeichen festlegen.

Dann kannst Du künftig bloss noch die Abfrage aktualisieren und die Daten
vom Import-Blatt ins Übersicht-Blatt kopieren.
Da ich den Code ab dem Split noch nicht ganz verstanden habe, bràuchte ich
mal eine Hilfestellung. Wenn ich es richtig verstehe, müßte ich in der
Zeile Tmp = Split(Arr(L), " ") meine Daten nicht nach dem Kriterium " "
splitten lassen, sondern nach TAB. Wie wird das an dieser Stelle
ausgedrückt?



vbTab


Ist die von mir eingefügte Codezeile mit dem Replace-Befehl korrekt?



Werden denn alle Punkte korrekt durch Kommas ersetzt?
Wenn ja passt der Replace-Befehl... ;-)

Allerdings könnten/werden deine Werte wohl als Text in den Zellen stehen,
da Du hier 'nur' Strings umschaufelst. Mit dem Import-Assistenten hast Du
dann korrekte Zahlen in den Zellen stehen.



Mit freundlichen Grüssen
Thomas Ramel

- MVP für Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]

Ähnliche fragen