pmeyer
Aufsteiger
Dabei seit: 05.02.2002
Beiträge: 65
Herkunft: Melle bei Osnabrück
![](images/spacer.gif) |
|
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.
|
|
17.04.2002 15:15 |
|
|
Kalka
BlackBoarder
![](images/star.gif) ![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
Dabei seit: 16.03.2002
Beiträge: 856
![](images/spacer.gif) |
|
"das drittletzte und vorletzte Zeichen aus der viertletzten und drittletzten Zeile "
muss man das verstehen?
erklär mal genauer
cu Kalka
__________________ In wirklichkeit sind wir alle kleine grüne Kaninchen!
|
|
17.04.2002 15:21 |
|
|
pmeyer
Aufsteiger
Dabei seit: 05.02.2002
Beiträge: 65
Herkunft: Melle bei Osnabrück
Themenstarter
![](images/spacer.gif) |
|
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.
|
|
17.04.2002 15:31 |
|
|
Kalka
BlackBoarder
![](images/star.gif) ![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
Dabei seit: 16.03.2002
Beiträge: 856
![](images/spacer.gif) |
|
....nur is das problem das ich kein VB kann
gibt es denn keine function, die die zahlen 17+18 suchen können??
cu Kalka
__________________ In wirklichkeit sind wir alle kleine grüne Kaninchen!
|
|
17.04.2002 20:04 |
|
|
pmeyer
Aufsteiger
Dabei seit: 05.02.2002
Beiträge: 65
Herkunft: Melle bei Osnabrück
Themenstarter
![](images/spacer.gif) |
|
Ich will ja nicht 17+18 suchen, sondern die Zahlen die an dieser Position stehen. In anderen Dateien können da andere Zahlen stehen.
|
|
17.04.2002 20:38 |
|
|
Kalka
BlackBoarder
![](images/star.gif) ![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
Dabei seit: 16.03.2002
Beiträge: 856
![](images/spacer.gif) |
|
kannse nicht einfach die strings nach und vor der stelle abschneide? mit "cut" oder so!?
cu Kalka
__________________ In wirklichkeit sind wir alle kleine grüne Kaninchen!
|
|
18.04.2002 17:53 |
|
|
Medusa
Senior Member
![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
![images/avatars/avatar-252.gif](images/avatars/avatar-252.gif)
Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...
![](images/spacer.gif) |
|
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
(hört sich cool an, wa).
__________________ Grüßle, Medi
|
|
21.04.2002 21:14 |
|
|
pmeyer
Aufsteiger
Dabei seit: 05.02.2002
Beiträge: 65
Herkunft: Melle bei Osnabrück
Themenstarter
![](images/spacer.gif) |
|
Na gut, man könnte ja alle Textdateien in einen Ordner zusammenkopieren. Geht es dann?
|
|
22.04.2002 10:53 |
|
|
Medusa
Senior Member
![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
![images/avatars/avatar-252.gif](images/avatars/avatar-252.gif)
Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...
![](images/spacer.gif) |
|
|
|
gute idee....
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...
__________________ Grüßle, Medi
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von Medusa: 22.04.2002 15:47.
|
|
22.04.2002 14:04 |
|
|
pmeyer
Aufsteiger
Dabei seit: 05.02.2002
Beiträge: 65
Herkunft: Melle bei Osnabrück
Themenstarter
![](images/spacer.gif) |
|
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?
|
|
27.04.2002 19:56 |
|
|
Medusa
Senior Member
![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
![images/avatars/avatar-252.gif](images/avatars/avatar-252.gif)
Dabei seit: 10.09.2001
Beiträge: 356
Herkunft: ...von da, wo mein Haus wohnt...
![](images/spacer.gif) |
|
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
)
__________________ Grüßle, Medi
|
|
28.04.2002 16:34 |
|
|
|
![Antwort erstellen Antwort erstellen](images/3_reply_neu.gif) |
|