*.txt öffnen, string lesen, schließen, verschieben

Hallo zusammen,

ich möchte gern edifact Dateien öffnen, einen string auslesen und anhand des strings die Datei gezielt in einen Ordner verschieben.

Das habe ich bisher (durch stöbern in anderen Foren) als Lösung.
Kann den Pfad finden, wo alle Dateien liegen, aber das Öffnen, Suchen des Strings, Vergleichen mit Liste und verschieben, das bekomme ich nicht hin.

Sub openFiles()

Dim path As String
Dim pattern As String
Dim file As String
Dim strPath As String
Dim strSearch As String
Dim strPathFile As String

strPathFile = Application.GetOpenFilename

'Trennzeichen bestimmen
If InStr(strPathFile, „/“) > 0 Then
strSearch = „/“
Else
strSearch = „“
End If
'Dateiname extrahieren
strPath = Left$(strPathFile, InStrRev(strPathFile, strSearch))
'Rückgabe
path = strPath

pattern = „*.txt“
file = Dir(path & pattern)
Do While file „“
MsgBox file 'Hier Verarbeitung einfügen

file = Dir

>Hier müsste irgendwie die Verarbeitung der Datei rein, öffnen, string suchen und mit einer Liste bekannter Strings vergleichen und entsprechend in einen Ordner verschieben. Wenn String nicht in Liste, dann in einen Ordner Namens „unbekannt“ verschieben.

TextDat.Close

Loop

End Sub


Der String befindet sich in der Textdatei zwischen dem 2. und 3. Doppelpunkt. Er ist 13stellig und besteht nur aus Zahlen.

Die Liste zum Vergleichen ist wie folgt aufgebaut:

Spalte1 | Spalte2
Nummer | Ordner
9800000000000 | G:\Allgemein\9800000000000
9800000000001 | G:\Allgemein\9800000000001

Vielen Dank schon mal für Hilfen und Anregungen.

Gruß
Jens

Excel VBA?
Hallo Jens,

wenn Du mit angibst, womit Du Dein Projekt realisieren möchtest, wird Deine Frage auch von den Leuten gelesen, die Dir helfen können.

strPathFile = Application.GetOpenFilename

Das deutet auf Excel VBA hin. Richtig? Dann musst Du nur noch verraten, welche Excel Vrsion.

Gruß Rainer

Der String befindet sich in der Textdatei zwischen dem 2. und
3. Doppelpunkt. Er ist 13stellig und besteht nur aus Zahlen.

Die Liste zum Vergleichen ist wie folgt aufgebaut:

Spalte1 | Spalte2
Nummer | Ordner
9800000000000 | G:\Allgemein\9800000000000
9800000000001 | G:\Allgemein\9800000000001

Hallo Jens,

wo ist der 2. und 3.te Doppelpunkt?

Gruß
Reinhard

Hallo Rainer,

es ist Excel 2003 in dem ich das mit VBA realisieren möchte.

Danke und Gruß
Jens

Der String befindet sich in der Textdatei zwischen dem 2. und
3. Doppelpunkt. Er ist 13stellig und besteht nur aus Zahlen.

Die Liste zum Vergleichen ist wie folgt aufgebaut:

Spalte1 | Spalte2
Nummer | Ordner
9800000000000 | G:\Allgemein\9800000000000
9800000000001 | G:\Allgemein\9800000000001

Hallo Jens,

wo ist der 2. und 3.te Doppelpunkt?

Hallo Reinhard,
in der Textdatei ist eine Zeile Text mit allem möglichen Kram drin. Aber zwischen dem Zweiten und Dritten Doppelpunkt steht die Nummer.

„UNB+UNOA:3+9870000000018:502+9870000000001:502+090812:2021+9071029651++++++0’UNH+9071029651+ORDRSP…“

Gruß
Jens

Hallo Reinhard,

Die Liste zum Vergleichen ist wie folgt aufgebaut:

Spalte1 | Spalte2
Nummer | Ordner
9800000000000 | G:\Allgemein\9800000000000
9800000000001 | G:\Allgemein\9800000000001

wo ist der 2. und 3.te Doppelpunkt?

das ist die Liste (wo immer die auch steht, ich vermute ein Listen-Steuerelement) in der den Nummernkreisen Verzeichnisse zugeordnet werden.
Die Daten, die gelesen werden, können etwa so oder ähnlich aussehen:

BGM+380:::X+237624:X:X+9+AA’

Hier würde die Nummer zwischen dem 2. Plus und 4. Doppelpunkt stehen.
Die ganze Datei ist ein langer String, das Ende einer Zeile markiert das Apostroph.

Gruß Rainer
PS. OT. Code tippen kann ich nicht, mein Notebook ist abgeraucht. Ich sitze am Mac. :frowning:

in der Textdatei ist eine Zeile Text mit allem möglichen Kram
drin. Aber zwischen dem Zweiten und Dritten Doppelpunkt steht
die Nummer.

„UNB+UNOA:3+9870000000018:502+9870000000001:502+090812:2021+9071029651++++++0’UNH+9071029651+ORDRSP…“

Hallo Jens,

nachfolgender Code zeigt an:

502+9870000000001

Und nun, steht die 13stellige Nummer immer ganz rechts oder was erwartet da einen?

Sub tt()
Dim Satz As String, S() As String
Satz = „UNB+UNOA:3+9870000000018:502+9870000000001:502+090812:2021+9071“
S = Split(Satz, „:“)
MsgBox S(2)
End Sub

Gruß
Reinhard

Hallo Jens,

nachfolgender Code zeigt an:

502+9870000000001

Und nun, steht die 13stellige Nummer immer ganz rechts oder
was erwartet da einen?

Sub tt()
Dim Satz As String, S() As String
Satz =
„UNB+UNOA:3+9870000000018:502+9870000000001:502+090812:2021+9071“
S = Split(Satz, „:“)
MsgBox S(2)
End Sub

Gruß
Reinhard

ja die nummer steht dann immer rechts.

Die Liste zum Vergleichen habe ich noch nicht erstellt.
Kann eine xls, oder csv werden die ich im selben Ordner, wie die Exceldatei mit dem Makro ablege.

Danke!

Das ist mal ein Auszug aus einer txt.

UNB+UNOA:3+9870000000018:502+9870000000001:502+090812:2021+9071029651++++++0’UNH+9071029651+ORDRSP

die nummer nach dem 2. Doppelpunkt und vor dem 3. ist 9870000000001

Nebenbei, weil das schon zu Problemen bei der EDV geführt hatte:
Das Apostroph beendet keine Zeile, es wird aber in den meisten Beschreibung zur Übersicht als Zeilenende verwendet. Ein Zeilenumbruch darf dort nicht erfolgen. Wenn so eine Datei mit Zeilenumbruch auf einen Konverter trifft, der Zeilenumbrüche nicht kennt, dann gibts Schwierigkeiten…

Hier würde die Nummer zwischen dem 2. Plus und 4. Doppelpunkt
stehen.
Die ganze Datei ist ein langer String, das Ende einer Zeile
markiert das Apostroph.

Gruß Rainer
PS. OT. Code tippen kann ich nicht, mein Notebook ist
abgeraucht. Ich sitze am Mac. :frowning:

?? was heißt OT.?

Hallo zusammen,

nun bin ich etwas weiter.

Das Problem ist, ich weiß nicht, wie ich eine Datei nach der anderen öffne, den String in der Liste suche, die Datei schließe und entsprechend der Fundstelle in der Liste verschiebe in einen anderen Ordner.
Kann hier jemand ein paar Tipps geben?

Danke, jens

Sub openFiles()

Dim path As String
Dim pattern As String
Dim file As String
Dim strPath As String
Dim strSearch As String
Dim strPathFile As String
Dim Satz As String, S() As String

strPathFile = Application.GetOpenFilename '„G:\VN-B-EDM\Blumberg\Excel\Alocatsdurchsuchenmakro“

'Trennzeichen bestimmen
If InStr(strPathFile, „/“) > 0 Then
strSearch = „/“
Else
strSearch = „“
End If
'Dateiname extrahieren
strPath = Left$(strPathFile, InStrRev(strPathFile, strSearch))
'Rückgabe
path = strPath

pattern = „*.txt“
file = Dir(path & pattern)
Do While file „“
MsgBox file 'Hier Verarbeitung einfügen

file = Dir
dateinummer = FreeFile

'!!!Beim 2. Durchlauf klappts hier nicht mehr.
Open file For Output As #dateinummer

Satz = „UNB+UNOA:3+9870000000018:502+9870000000001:502+090812:2021+9071“
S = Split(Satz, „:“)
A = Right(S(2), 13)
MsgBox A

Close #dateinummer

'TextDat.Close

Loop

End Sub

Hallo,

Das ist mal ein Auszug aus einer txt.

UNB+UNOA:3+9870000000018:502+9870000000001:502+090812:2021+9071029651++++++0’UNH+9071029651+ORDRSP

ja, das sieht etwa aus wie die Daten, die mein Programm schreibt.

die nummer nach dem 2. Doppelpunkt und vor dem 3. ist
9870000000001

Nebenbei, weil das schon zu Problemen bei der EDV geführt
hatte:
Das Apostroph beendet keine Zeile, es wird aber in den meisten
Beschreibung zur Übersicht als Zeilenende verwendet. Ein
Zeilenumbruch darf dort nicht erfolgen. Wenn so eine Datei mit
Zeilenumbruch auf einen Konverter trifft, der Zeilenumbrüche
nicht kennt, dann gibts Schwierigkeiten…

Das war nur als Erklärung für Reinhard. Daß da kein Zeilenumbruch steht, hatte ich mit geschrieben.

PS. OT. Code tippen kann ich nicht, mein Notebook ist
abgeraucht. Ich sitze am Mac. :frowning:

?? was heißt OT.?

Off Topic. Eine Info für Reinhard, die mit Deinem Problem nur sekundär zu tun hat. Reinhard weiß jetzt, daß ich nicht viel helfen kann.

Gruß Rainer

und wie ich die Daten aus der *.txt lese, so dass ich die Varibale Satz auswerten kann. Das fehlt mir auch.

Danke!

Jens