BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- VBA Daten auslesen (http://www.black-board.net/thread.php?threadid=4809)


Geschrieben von pmeyer am 17.04.2002 um 15:15:

  VBA Daten auslesen

Ich möchte in Excel Daten aus Textdateien auslesen.

Ich habe einen Ordner z.B. c:\test. Dieser enthält mehrere Unterordner und in diesen sind wieder mehrere Textdateien. Ich möchte nun aus allen Dateien in allen Ordnern das drittletzte und vorletzte Zeichen aus der viertletzten und drittletzten Zeile auslesen und an Excel zurückgeben.



Geschrieben von Kalka am 17.04.2002 um 15:21:

 

"das drittletzte und vorletzte Zeichen aus der viertletzten und drittletzten Zeile "

muss man das verstehen?
erklär mal genauer Augenzwinkern

cu Kalka



Geschrieben von pmeyer am 17.04.2002 um 15:31:

 

OK, hier eine Beispiel Datei:

000170
000412@+
1220690-
0690J0@-
0874J0@+
1179J0@-
1222J0@+
1200J0@-
1164J0@+
1213J0@-
1178J5@+
1184K2@-
1237K1@+
1238J1@-
1170J1@+
1186K1@-
1215K0@+
1222J5@-
1182J4@+
1205K1@-
1213J7@+
1178J5@-
1193K2@+
1213J9@-
1192J5@+
1160J9@-
1196K5@+
1185J9@-
1155K1@+
1181K6@-
1191K1@+
1157J9@-
1152K6@+
1188K7@-
1174K0@+
1137K3@-
1167K9@+
1194K4@-
1155J9@+
1153K6@-
1176K6@+
1169K2@-
1146K4@+
1185K8@-
1191K1@+
1161J9@-
1169K5@+
1186K4@-
1175K0@+
1158K2@-
1190K6@+
1181K0@-
1171K1@+
1172K3@-
1192K3@+
1153J9@-
1172K6@+
1200K3@-
1178J8@+
1154K2@-
1190K6@+
1199K0@-
1171J8@+
1166K3@-
1198K4@+
1184J8@-
1168K1@+
1186K4@-
1193K0@+
1179J9@-
1196K2@+
1205J9@-
1171J7@+
1166K3@-
1198K4@+
1182J8@-
1158K1@+
1181K6@-
1198K1@+
1163J8@-
1171K5@+
1191K3@-
1178J9@+
1149K2@-
1199K7@+
1201J8@-
1158J8@+
1175K6@-
1196K2@+
1170J9@-
1158K3@+
1209K6@-
1185J6@+
1170K1@-
1171K3@+
1186K3@-
1152K0@+
1164K7@-
1185K4@+
1172K1@-
1141K3@+
1174K9@-
1166K3@+
1142K4@-
1143K8@+
1161K8@-
1151K5@+
1136K7@-
1146L0@+
1171K8@-
1149K3@+
1139K7@-
1170K9@+
1155K3@-
1129K6@+
1138L1@-
1160K9@+
1143K5@-
1131K8@+
1150L0@-
1145K7@+
1125K8@-
1147L2@+
1162K8@-
1134K5@+
1106L0@-
1146L5@+
1152K8@-
1118K7@+
1131L3@-
1148L0@+
1143K7@-
1123K8@+
1143L2@-
1145K8@+
1114K8@-
1130L4@+
1163L1@-
1150K5@+
1127K7@-
1155L1@+
1194K6@-
1155J9@+
1146K6@-
1173K8@+
1179K3@-
1174K2@+
1180K3@-
1204K2@+
1176J7@-
1179K2@+
1222K2@-
1220J4@+
1196J4@-
1208J9@+
1240J6@-
1214J1@+
1195J5@-
1238J9@+
1251J1@-
1228I9@+
1239J3@-
1290J1@+
1280I1@-
1241I3@+
1283J0@-
1313I3@+
1283H7@-
1294I3@+
1330I1@-
1332H4@+
1289H4@-
1062I2@+
#000017 -
#000018 +
#000100-
6
Die 17 und 18 möchte ich ausgelesen haben.



Geschrieben von Kalka am 17.04.2002 um 20:04:

 

....nur is das problem das ich kein VB kann großes Grinsen
gibt es denn keine function, die die zahlen 17+18 suchen können??

cu Kalka



Geschrieben von pmeyer am 17.04.2002 um 20:38:

 

Ich will ja nicht 17+18 suchen, sondern die Zahlen die an dieser Position stehen. In anderen Dateien können da andere Zahlen stehen.



Geschrieben von Kalka am 18.04.2002 um 17:53:

 

kannse nicht einfach die strings nach und vor der stelle abschneide? mit "cut" oder so!?

cu Kalka



Geschrieben von Medusa am 21.04.2002 um 21:14:

 

Ich würd mal sagen, die Zeichen rauszufinden is gar kein Problem. Das is in 5 Minuten geschrieben. Das größere Problem wäre, dem Prog zu sagen, dass er des mit allen Dateien in allen Unterordner, welche auch nochmal untergeordnete Unter-Unterordner untergeordnet haben großes Grinsen (hört sich cool an, wa).



Geschrieben von pmeyer am 22.04.2002 um 10:53:

 

Na gut, man könnte ja alle Textdateien in einen Ordner zusammenkopieren. Geht es dann?



Geschrieben von Medusa am 22.04.2002 um 14:04:

 

gute idee.... großes Grinsen
Das mit dem kopieren kann ja das Prog auch selber machen... ich schreib's dir mal...

[Edit]: Ein weiteres Problem wäre dann, dass wenn in Ordner X eine Datei Y is, und in ordner Z auch eine Datei Y is und diese in einen Ordner kopiert werded. Wird eins davon überschrieben...

Dim Pfad, Zeile, Zeichen1(), Zeichen2() As String, ZeilenNr As Single

'-------------------------
Pfad = "C:\Bla"
'-------------------------

FileList.ReadOnly = True
FileList.Hidden = True
FileList.System = True
FileList.Archive = True

FileList.Path = Pfad

ReDim Zeichen1(0 To FileList.ListCount)
ReDim Zeichen2(0 To FileList.ListCount)


For F = 0 To FileList.ListCount - 1
Datei = Pfad + "\" + FileList.List(F)

'---- ZEILEN ZÄHLEN ----------------------------------------
Open Datei For Input As #1
ZeilenNr = 0
Do Until EOF(1)
ZeilenNr = ZeilenNr + 1 'Zählt die Zeilen
Line Input #1, Zeile
Loop
Zeile1 = ZeilenNr - 3 'Zeile1 = Zeilen vor der 3.Letzte Zeile
Zeile2 = ZeilenNr - 2 'Zeile2 = Zeilen vor der 2.Letzte Zeile
Close #1


'---- ZEILE1 ----------------------------------------------
Open Datei For Input As #1
For I = 1 To Zeile1
Line Input #1, Zeile
Next I 'Springt an Zeile1

If Zeile1 >= 0 Then
Line Input #1, Zeile 'List Zeile1 ein.
If Len(Zeile) >= 4 Then Zeichen1(F) = Mid(Zeile, (Len(Zeile) - 3), 2) 'Liest das 3.Letzte und Vorletzte Zeichen von Zeile1.
End If
Close #1


'---- ZEILE2 ----------------------------------------------
Open Datei For Input As #1
For I = 1 To Zeile2
Line Input #1, Zeile
Next I 'Springt an Zeile2

If Zeile2 >= 0 Then
Line Input #1, Zeile 'Liest Zeile1 ein.
If Len(Zeile) >= 4 Then Zeichen2(F) = Mid(Zeile, (Len(Zeile) - 3), 2) 'Liest das 3.Letzte und Vorletzte Zeichen von Zeile2.
End If
Close #1
Next F


Du musst eine FileListBox mit dem Namen 'FileList' erstellen. Ich wusste nicht wie ich das Ohne dem Steuerelement machen soll. Bei dem Excel-VB musst dann wahrscheinlich ne Form anlegen!
Die beiden Zeichen von der 3.letzten Zeile werden unter Zeichen1 abgelegt und die von der vorletzten in Zeichen2. Beide Variablen haben einen Index (von 0 bis FileList.ListCount), dh. die Zeichen von der 1.Datei sind in Zeichen1(0), bzw. Zeichen2(0), die von der 2.Datei in Zeichen1(1) bzw. Zeichen2(1), usw...



Geschrieben von pmeyer am 27.04.2002 um 19:56:

 

Erstmal vielen Dank, das hat geklappt.

Zwar nicht mit VBA weil es dort keine FileListBox gibt, oder zumindest habe ich keine gefunden, aber mit VB.

Jetzt müßte ich noch wissen, wie man die Daten zurück gibt.

Ich schätze mal direkt nach Excel geht nicht, aber in eine Textdatei die ich hinterher von Hand in Excel importiere???

Wenn ja wie? Und wenn nein wie anders?



Geschrieben von Medusa am 28.04.2002 um 16:34:

 

Hi,
In ne Textdatei is gar kein Problem:

Open "C:\zeichen.txt" For Output As #1
Print #1, "Zeichen 1:"
For I = 0 To FileList.ListCount
Print #1, Zeichen1(I)
Next I
Print #1, ""
Print #1, ""
Print #1, ""
Print #1, "Zeichen 2:"
For I = 0 To FileList.ListCount
Print #1, Zeichen2(I)
Next I
Close #1



Ich weiß leider net, wie sich das ganze ohne Filelistbox machen lässt. Und hab auch kein Plan, wie man das in excel direkt importieren kann (aber es geht irgendwie großes Grinsen )


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH