Einleseformate

Hallo
wenn ich eine Datei einlese, gibt es eine Möglichkeit bestimmte Formate vorweg zu definieren, wenn die Zeilen immer gleich sind, das zB in Spalte 1-8 Punktnummer, 10-17 Koordinate usw steht???

Wie kann ich das Format allgemein überprüfen, das der Punkt an der richtigen Stelle steht und keine Buchstaben stehen anstatt Zahlen, zB 10B.88 statt 100.88

Besonders die Prüfung ob Buchstabe oder Zahl würde mich da interessieren.

Mfg Werner

hallo werner,

wenn du weist, was welches zelle für ein format haben soll, setze es doch einfach –

Cells(1, 1).NumberFormat = „#,##0.00 $“

oder setze pauschal das format deiner spalte

Columns(„C:C“).Select
Selection.NumberFormat = „0.00“

viele grüße

rasta

http://www.vba-forum.de

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

falsch verstanden???
Hallo
ich glaube das hast du etwas falsch verstanden. Soweit, das das in der Zelle steht bin ich noch gar net, es geht darum, eine Zeile einer Datei aus Text in mehrere Zahlen oder Texte aufzuteilen und die dann in Zellen zu schreiben. Dafür wollte ich fragen ob es eine Vereinfachung gibt, formatierte Dateien mit identischen Zeilenformat einzulesen und die Daten rauszuziehen und letztendlich in Zellen zu schreiben.

Mfg Werner

Hallo, Werner!

ich glaube das hast du etwas falsch verstanden. Soweit, das

Ja, das glaube ich auch.

das in der Zelle steht bin ich noch gar net, es geht darum,
eine Zeile einer Datei aus Text in mehrere Zahlen oder Texte
aufzuteilen und die dann in Zellen zu schreiben. Dafür wollte
ich fragen ob es eine Vereinfachung gibt, formatierte Dateien
mit identischen Zeilenformat einzulesen und die Daten
rauszuziehen und letztendlich in Zellen zu schreiben.

Theoretisch solltest Du mit OpenText eine solche Textdatei öffen können. Aber Du hattest ja folgendes Problem:

Wie kann ich das Format allgemein überprüfen, das der Punkt
an der richtigen Stelle steht und keine Buchstaben stehen
anstatt Zahlen, zB 10B.88 statt 100.88

Da hilft ggf. nur, die Datei zu öffnen, zeilenweise einzulesen, den eingelesenen Text zu parsen und zu überprüfen.

Das läuft ungefähr so:

Sub Testen(pstrDatei as string)
 dim intFNr as integer
 dim strZeile as string

 intFNr=FreeFile
 Open pstrDatei for input as #intFNr
 do while not Eof(intFNr)
 line input #intFNr, strZeile
 ' Jetzt die Zeile überprüfen, z. B. mit Len() bei fixen Längen...
 If strZeile like "###.##\* then
 ' Zeile fängt mit drei Ziffern, Punkt, zwei Ziffern an
 else ...
 ' weitere Funktionen, die sinnvoll für solche Prüfungen sind:
 ' Mid$, Left$, Right$, Like in allen Varianten, InStr 
 endif
 loop
 Close(intFNr)
End Sub

Wie immer ungetestet und uncompiliert…

Gruß, Manfred

Hallo
Danke erstmal,
also hatte ich das schon richtig gedacht,
Frage nur noch , ob es eine Prüfung gibt, ob ein Letter eine Zahl oder ein Buchstabe ist???

Mfg Werner

Hallo Werner,

Frage nur noch , ob es eine Prüfung gibt, ob ein Letter eine
Zahl oder ein Buchstabe ist???

bring mal den folgenden Code zum Laufen, das Ergebnis wird Deine Fragen beantworten.

Private Sub Command1\_Click()
 For i = 32 To 255
 w = Str(Asc(Chr(i))) + " " + Chr(i)
 List1.AddItem w
 Next
End Sub

Daß die Befehle Str(Asc(Chr(i))) sich gegenseitig aufheben weiß ich, das habe ich nur gemacht um Asc einbauen zu können, das ist der Befehl, den Du brauchst. :wink:

Gruß, Rainer

Hallo, Werner!

also hatte ich das schon richtig gedacht,
Frage nur noch , ob es eine Prüfung gibt, ob ein Letter eine
Zahl oder ein Buchstabe ist???

Siehe Hilfe zu LIKE. # steht für eine Zahl, $ für ein beliebiges Zeichen. Oder Du arbeitest wie unten beschrieben mit Asc.

Gruß, Manfred