Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1084to1088
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

Textdatei zeilenweise auslesen; Werte aus Zeile

Textdatei zeilenweise auslesen; Werte aus Zeile
Rolf
Hallo Excel-Gemeinde,
ich muß aus einer Textdatei Datensätze auslesen, die über drei Zeilen gehen.
Hier ein Beispiel:

201WGW2 GERMAN BIGHT WESTERN APPROACH, KARTE 2
202WGW2 N540545 0E 61730 0N541250 0E 637 0 0 20000 1 9
203WGW2 2518000 05995000 0 2542000 06011000 00
Ich habe ein altes QuickBasic 4.5 Programm bekommen, mit dem es früher lief.
Hier ist es:

CLS
CLOSE
datenfile$ = "D:\Daten\ChartServer\TKS_Ausd.txt"
ergebnisfile$ = "D:\Daten\ChartServer\TKS_Ausd.lis"
OPEN datenfile$ FOR INPUT AS #1
OPEN ergebnis$ FOR OUTPUT AS #3
DO UNTIL INKEY$ "" OR EOF(1)
LINE INPUT #1, a$
N = N + 1
IF MID$(a$, 1, 3) = "201" THEN
Kartennummer$ = MID$(a$, 4, 6)
Kartenname$ = MID$(a$, 11, 69)
ELSEIF MID$(a$, 1, 3) = "202" THEN
Kartennummer$ = MID$(a$, 4, 6)
SWBreiteText$ = MID$(a$, 11, 1)
SWGradBreite$ = MID$(a$, 12, 2): SWMinBreite$ = MID$(a$, 14, 2): SWSekBreite$ = MID$(a$, 16, 2)
SWBreite$ = SWGradBreite$ + " " + SWMinBreite$ + " " + SWSekBreite$
SWLaengeText$ = MID$(a$, 20, 1)
SWGradLaenge$ = MID$(a$, 21, 3): SWMinLaenge$ = MID$(a$, 24, 2): SWSekLaenge$ = MID$(a$, 26, 2)
SWLaenge$ = SWGradLaenge$ + " " + SWMinLaenge$ + " " + SWSekLaenge$
NEBreite$ = MID$(a$, 11, 1)
NEGradBreite$ = MID$(a$, 12, 2): NEMinBreite$ = MID$(a$, 14, 2): NESekBreite$ = MID$(a$, 16, 2)
NEBreite$ = NEGradBreite$ + " " + NEMinBreite$ + " " + NESekBreite$
NELaenge$ = MID$(a$, 20, 1)
NEGradLaenge$ = MID$(a$, 21, 3): NEMinLaenge$ = MID$(a$, 24, 2): NESekLaenge$ = MID$(a$, 26, 2)
NELaenge$ = NEGradLaenge$ + " " + NEMinLaenge$ + " " + NESekLaenge$
Massstab$ = MID$(a$, 49, 9)
Erdellipsoid$ = MID$(a$, 58, 2)
Projektion$ = MID$(a$, 60, 2)
IF Projektion$ = " 4" THEN
KSgeod$ = "ED50"
KSeben$ = "DHDN"
ELSEIF Projektion$ = " 5" THEN
KSgeod$ = "ED50"
KSeben$ = "UTM"
ELSEIF Projektion$ = " 6" THEN
KSgeod$ = "WGS84"
KSeben$ = "S42/83"
ELSEIF Projektion$ = " 9" THEN
KSgeod$ = "WGS84"
KSeben$ = "DHDN"
ELSEIF Projektion$ = "18" THEN
KSgeod$ = "WGS84"
KSeben$ = "UTM"
ELSE
LOCATE 32, 1:
PRINT "Unbekannte Projektion !!!!!!"; Projektion$
SLEEP 1
END IF
Ellipsoidverschiebung$ = MID$(a$, 62, 18)
ELSEIF MID$(a$, 1, 3) = "203" THEN
Kartennummer$ = MID$(a$, 4, 6)
LUKennziffer$ = MID$(a$, 11, 2)
LUMRechts$ = MID$(a$, 13, 6): LUCRechts$ = MID$(a$, 19, 2)
LURechts$ = LUMRechts$ + "," + LUCRechts$: KLURechts$ = LUKennziffer$ + LURechts$
LUMHoch$ = MID$(a$, 21, 6): LUCHoch$ = MID$(a$, 28, 2)
LUHoch$ = LUMHoch$ + "," + LUCHoch$: KLUHoch$ = LUKennziffer$ + LUHoch$
ROKennziffer$ = MID$(a$, 30, 2)
ROMRechts$ = MID$(a$, 32, 6): ROCRechts$ = MID$(a$, 38, 2)
RORechts$ = ROMRechts$ + "," + ROCRechts$: KRORechts$ = ROKennziffer$ + RORechts$
ROMHoch$ = MID$(a$, 40, 6): ROCHoch$ = MID$(a$, 47, 2)
ROHoch$ = ROMHoch$ + "," + ROCHoch$: KROHoch$ = ROKennziffer$ + ROHoch$
ELSE
LOCATE 30, 1:
PRINT "Unbekannte Datenzeile !!!!!!"; a$
SLEEP 1
END IF
LOCATE 20, 1: PRINT Kartennummer$, Massstab$, KSgeod$, SWBreiteText$, SWBreite$, NEBreiteText$, NEBreite$, KSeben$, KLUHoch$, KLURechts$, KROHoch$, KRORechts$
PRINT #3 Kartennummer$, Massstab$, KSgeod$, SWBreiteText$, SWBreite$, NEBreiteText$, NEBreite$, KSeben$, KLUHoch$, KLURechts$, KROHoch$, KRORechts$
LOCATE 15, 1: PRINT "Es sind bereits" + STR$(N) + " Datensaetze gelesen "
LOOP
CLOSE
END
Nun möchte ich die Daten direkt in eine Arbeitsmappe schreiben.
Kann mir bitte jemand beim Umsetzen des QB4.5-Quellcodes in VisualBasic helfen?
Ich kriege das nicht hin!
Gruß
Rolf

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textdatei zeilenweise auslesen; Werte aus Zeile
26.06.2009 12:58:45
fcs
Hallo Rolf,
hier mal dein Code (als text-Datei) angepasst für Import in eine Excel-Tabellenblatt. Dabei wird beim Import eine neue Arbeitsmappe mit 1 Tabelle angelegt. Die Zieltabelle kannst du natürlich auch anders definieren.
Die 2 Zeilen, die die Textdatei generieren würden hab ich auskommentiert.
https://www.herber.de/bbs/user/62757.txt
Mich wundert das der Code unter QB4.5 funktioniert hat, weil die Logic schwierig nachzuvollziehen ist.
Scheinbar bewirkten die LOCATE-Anweisungen Sprünge im Code , die ich nicht nachvollziehen kann.
Ich hab die If-Anweisungen mal so umgestellt, wie sie nach meinem Verständnis eine korrekte Logik wiedergeben, dass nämlich immer 3 Zeilen aufeianderfolgen, die mit 201, 202 und 203 beginnen müssen, damit ein Datensatz vollständig ist.
Ansonsten muss du ZielNamen für Sprungziele einfügen und statt mit LOCATE mit Goto ZielName arbeiten.
Gruß
Franz
Anzeige
AW: Textdatei zeilenweise auslesen; Werte aus Zeil
29.06.2009 08:55:17
Rolf
Hallo Franz,
vielen Dank für die Hilfe, das bringt mich schon deutlich weiter.
So langsam fange ich an VB zu verstehen.
Gruß
Rolf

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige