Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1352to1356
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

VBA Code für import von .txt Dateien

VBA Code für import von .txt Dateien
26.03.2014 11:32:21
.txt
Hallo Liebe User,
ich hoffe Ihr könnt mir weiterhelfen...
Ich muss in eine Excel Vorlage .txt Dateien importieren. Das heißt, bestimmte Daten aus der .txt Datei müssen in bestimmte zellen in die Excel Vorlage kopiert werden.
Gibt es die Möglichkeit ein VBA Code zu erstellen der die Textdatei nach bestimmten Information durchsucht und diese dann in bestimmte Zellen einfügt.
Die .txt Dateien sind immer in einem bestimmten Ordner abgelegt und müssen alle ausgelesen, die benötigten Daten in die Excel Vorlage importiert und dann in einen anderen Ordner verschoben werden.
Die Excel Vorlage hat 7 Spalten in die jeweils untereinander die Daten der jeweiligen .txt Dateien eingefügt werden sollen.
z.B.:
Name Ort Adresse Bankverbindung Betrag Ref Datum
Kann man in der .txt Datei nach diesen Begriffen suchen und festlegen, dass z.B. nach dem Wort "Namen" alle Zeichen bis zum Wort "Or"t in díe entsprechende Zelle in Excel eingefügt wird usw.
Vielen Dank für Eure Hilfe!
VG
Max

35
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code für import von .txt Dateien
26.03.2014 11:36:16
.txt
Hi Max
ja, man kann.
Aber wir kennen die Inhalte und Aufbau deiner txt-Dateien und den Aufbau deiner xls-Vorlagen nicht.
Zeig bitte mind. 1 txt-Bsp-Datei, und zeig uns deine xls-Vorlagendatei, gerne auch als Bsp-Datei.
Wichtig ist nur, dass der Aufbau identisch zu den Originalen ist.
Ciao
Thorsten

AW: VBA Code für import von .txt Dateien
26.03.2014 12:58:10
.txt
Hallo Thortsen,
das ist ja super.
Anbei jeweils eine Beispiel datei...
Vielen Dank und viele Grüße
Max

wenn du jetzt noch ...
26.03.2014 13:28:30
Rudi
Hallo,
... beschreiben würdest, was wo hin soll, könnte man dir evtl helfen.
Gruß
Rudi

AW: wenn du jetzt noch ...
26.03.2014 13:53:59
Andreas
Hallo Rudi,
sorry, das habe ich ja total vergessen...
In das Excel Feld "Status" sollen aus den Textdateien die ersten 7 Zeichen aus Zeile 4
In das Excel Feld "VU" sollen die Daten die zwischen dem Feld "Merchant:" und dem Feld "Tran ID" stehen
In das Excel Feld "PAN" sollen die Daten die zwischen dem Feld "Card/Acct #:" und dem Feld "Tran Type" stehen
In das Excel Feld "ARN" sollen die Daten die zwischen dem Feld "ARN:" und dem Feld "Tran Amt" stehen
In das Excel Feld "Betrag" sollen die Daten die zwischen dem Feld "Tran Amt:" und dem Feld "Acquirer:" stehen
In das Excel Feld "Txt" sollen die Daten die zwischen dem Feld "Why are you initiating Pre-Arbitration?" und dem Feld "Days Given to Respond:" stehen
Vielen Dank für Eure Hilfe!
VG
Max

Anzeige
AW: wenn du jetzt noch ...
26.03.2014 16:20:04
Rudi
Hallo,
teste mal:
Sub aaaa()
Dim sText, sTmp As String, arrTmp
Dim sFile As String, sPath As String
Dim lRow As Long
Application.ScreenUpdating = False
sPath = ThisWorkbook.Path & "\"
sFile = Dir(sPath & "*.txt")
Do While sFile  ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
Do While Not EOF(1)
Line Input #1, sTmp
sText = sText & sTmp & vbCr
Loop
Close #1
sText = Split(sText, vbCr)
Cells(lRow, 1) = Left(sText(3), 7)  'Status Zeile 4
arrTmp = Split(sText(6), ":")
Cells(lRow, 2) = Trim(arrTmp(3))
arrTmp = Split(sText(5), ":")
Cells(lRow, 3) = Trim(Split(arrTmp(1), vbTab)(0))
arrTmp = Split(sText(8), ":")
Cells(lRow, 4) = Trim(Split(arrTmp(1), vbTab)(0))
arrTmp = Split(arrTmp(2), vbTab)
Cells(lRow, 5) = Trim(arrTmp(1))
Cells(lRow, 6) = sText(23)
sFile = Dir
Loop
End Sub

.txt im gleichen Ordner wie die .xlsm
Gruß
Rudi

Anzeige
AW: wenn du jetzt noch ...
26.03.2014 18:06:06
Andreas
Hallo Rudi,
vielen Dank, das sieht schon sehr gut aus!!!
Was jetzt noch nicht funktioniert ist wenn in dem Ordner mehrere .txt Dateien sind und dies wird immer der Fall sein. Es sollte so sein, dass in der ersten Zeile im Excel Sheet die Daten von der ersten .txt Datei stehen und in der zweiten Zeile im Excel Sheet die Daten von der zweiten .txt Datei usw.
Eine super Variante wäre, wenn es ein Excel Sheet mit Schaltfläche geben würde und sich durch den klick auf die Schaltfläche das Excel Sheet mit den Daten öffnen würde.
Es wäre super, wenn Du mir da auch noch mit helfen könntest.
Wäre es auch möglich, den Pfad in dem die .txt Dateien gespeichert sind im Code anzugeben, sodass man die Excel Datei nicht im gleichen Verzeichnis haben muss.
1000 Dank schon Mal!!!
VG
Max

Anzeige
es fehlt eine Kleinigkeit
26.03.2014 23:50:16
Rudi
Hallo,
...
sFile = Dir
ReDim sText
Loop
...
Gruß
Rudi

Pfad angeben
27.03.2014 00:00:56
Rudi
Hallo,
hab ich vergessen.
einfach
sPath = "c:\test\"
oder was auch immer.
Gruß
Rudi

AW: VBA Code für import von .txt Dateien
26.03.2014 13:07:44
.txt
Hallo Thorsten,
noch als Nachtrag, es sind meherere .txt in dem Ordner die alle ausgelesen werden sollen und in die gleiche Excel Vorlage eingefügt werden sollen.
VG
Max

AW: VBA Code für import von .txt Dateien
26.03.2014 19:20:42
.txt
Hi Max
Dass es sich um mehrere txt-Dateien handelt, hattest du ja schon in deiner Erstfrage erwähnt.
Dass aber Rudis Code nur ein Ergebnis "auswirft", WEIL der Code dann auf einen Fehler läuft, hast du NICHT erwähnt...hmm
Der Grund ist, dass im Code von Rudi zuerst eine ganz normale String-Variable befüllt wird - sText.
Im Laufe des Codes wird sText aber zu einer Array-Variablen.
Und beim erneuten Einlesen der nächsten txt-Datei kann diese Variable nich mehr so befüllt werden, wie im ersten Durchgang.
(mich wundert nur, dass Rudi es nicht selbst bemerkt hat)
Versuch mal diesen Code
Sub aaaa()
Dim sText As String, sarrTxt() As String, sTmp As String, arrTmp
Dim sFile As String, sPath As String
Dim lRow As Long
Application.ScreenUpdating = False
sPath = "hier dein Pfad\" '\ am Ende MUSS SEIN!!
sFile = Dir(sPath & "*.txt")
Do While sFile  ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
Do While Not EOF(1)
Line Input #1, sTmp
sText = sText & sTmp & vbCr
Loop
Close #1
sarrTxt = Split(sText, vbCr)
Cells(lRow, 1) = Left(sarrTxt(3), 7)  'Status Zeile 4
arrTmp = Split(sarrTxt(6), ":")
Cells(lRow, 2) = Trim(arrTmp(3))
arrTmp = Split(sarrTxt(5), ":")
Cells(lRow, 3) = Trim(Split(arrTmp(1), vbTab)(0))
arrTmp = Split(sarrTxt(8), ":")
Cells(lRow, 4) = Trim(Split(arrTmp(1), vbTab)(0))
arrTmp = Split(arrTmp(2), vbTab)
Cells(lRow, 5) = Trim(arrTmp(1))
Cells(lRow, 6) = sarrTxt(23)
sFile = Dir
sText = ""
Loop
End Sub
Ich hab deine Bsp-txt-Datei 3x kopiert. In der Excel-Datei werden entsprechend 4x die gleichen Ergebisse angezeigt.
Wichtig auch noch.
Beachte den Hinweis im Code für sPath
Du musst den richtigen Pfad eintragen. Dann muss die Excel-Datei mit dem Code nicht im Verzeichnis mit den txt-Dateien gespeichert sein.
Hilfts?
Ciao
Thorsten

Anzeige
AW: VBA Code für import von .txt Dateien
26.03.2014 23:45:43
.txt
Hallo Thorsten,
Der Grund ist, dass im Code von Rudi zuerst eine ganz normale String-Variable befüllt wird - sText.
Im Laufe des Codes wird sText aber zu einer Array-Variablen.

Klar, dass dann sText = sText & ... nicht mehr geht.
Und beim erneuten Einlesen der nächsten txt-Datei kann diese Variable nich mehr so befüllt werden, wie im ersten Durchgang.
Da reicht ein simples
ReDim sText
vor Loop.
(mich wundert nur, dass Rudi es nicht selbst bemerkt hat)
weil ich es nur mit einer .txt getestet habe
Gruß
Rudi

Anzeige
AW: VBA Code für import von .txt Dateien
26.03.2014 23:59:39
.txt
Hi Rudi
hmm...habs mit ReDim nu nich getestet auf deine Anregung hin, gebe aber trotzdem zu bedenken, dass es mit ReDim nicht funktionieren würde...denn
...auch nach ReDim sText(irgdwas) bleibt sText nun eine Arrayvariable.
Der an sText zuweisende Code, der wiederholt wird
sText = sText & sTmp & vbCr
würde wohl auch wieder auf n Fehler laufen, da nun für sText die erforderliche Dimensionsangabe (oder wie das heißt) fehlt.
Ciao
Thorsten

so geht es mit mehreren Dateien
27.03.2014 09:45:32
Rudi
Hallo,
stimmt fast
ReDim sText verursacht einen Syntaxfehler.
sText = "" funktioniert.
Da es sich um einen Variant handelt, habe ich die Var. in vText umbenannt.
Sub aaaa()
Dim vText, sTmp As String, arrTmp
Dim sFile As String, sPath As String
Dim lRow As Long
Application.ScreenUpdating = False
sPath = "c:\test\test\" 'Ordner mit .txt
If Dir(sPath & "gelesen", vbDirectory) = "" Then
MkDir sPath & "gelesen" 'Ordner für gelesene .txt
End If
sFile = Dir(sPath & "*.txt")
Do While sFile  ""
vText = ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
Do While Not EOF(1)
Line Input #1, sTmp
vText = vText & sTmp & vbCr
Loop
Close #1
vText = Split(vText, vbCr)
Cells(lRow, 1) = Left(vText(3), 7)  'Status Zeile 4
arrTmp = Split(vText(6), ":")
Cells(lRow, 2) = Trim(arrTmp(3))
arrTmp = Split(vText(5), ":")
Cells(lRow, 3) = Trim(Split(arrTmp(1), vbTab)(0))
arrTmp = Split(vText(8), ":")
Cells(lRow, 4) = Trim(Split(arrTmp(1), vbTab)(0))
arrTmp = Split(arrTmp(2), vbTab)
Cells(lRow, 5) = Trim(arrTmp(1))
Cells(lRow, 6) = vText(23)
Name sPath & sFile As sPath & "gelesen" & "\" & sFile 'verschieben
sFile = Dir
Loop
End Sub

Gruß
Rudi

Anzeige
AW: so geht es mit mehreren Dateien
27.03.2014 10:10:11
Andreas
Hallo Rudi,
super, das funktioniert super mit dem abspeichern der txt Dateien!
Ich habe auch Thomas gerade nochmal gefragt, Kannst Du mir bitte kurz erklären welche Zeilen im Code die Auswahl der Daten in der Textdatei veranlassen. Ich habe beim testen bemerkt, dass es die eine oder andere Textdatei gibt wo die daten etwas verschoben sind und wollte versuchen dies über die Auswahlkriterien der Daten versuchen.
Vielen Dank und viele Grüße
Max
Vielen Dank und viele Grüße
Max

AW: so geht es mit mehreren Dateien
27.03.2014 10:48:42
Rudi
Hallo,
wo die daten etwas verschoben sind
dann suchen wir wirklich die Begriffe.
Sub aaaa()
Dim sText, sTmp As String, arrTmp
Dim sFile As String, sPath As String
Dim lRow As Long, iStart As Integer, iEnde As Integer
Dim i As Integer
Application.ScreenUpdating = False
sPath = "c:\test\test\" 'Ordner mit .txt
If Dir(sPath & "gelesen", vbDirectory) = "" Then
MkDir sPath & "gelesen" 'Ordner für gelesene .txt
End If
sFile = Dir(sPath & "*.txt")
Do While sFile  ""
sText = ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
For i = 1 To 30
Line Input #1, sTmp
sTmp = Replace(sTmp, vbTab, "")
sTmp = WorksheetFunction.Trim(sTmp)
If i = 4 Then Cells(lRow, 1) = Left(sTmp, 7)  'Status
sText = sText & sTmp
Next
Close #1
iStart = InStr(sText, "Merchant:")
iStart = iStart + 9
iEnde = InStr(sText, "Tran ID:")
Cells(lRow, 2) = Mid(sText, iStart, iEnde - iStart)
iStart = InStr(sText, "Card/Acct #:")
iStart = iStart + 12
iEnde = InStr(sText, "Tran Type")
Cells(lRow, 3) = Mid(sText, iStart, iEnde - iStart)
iStart = InStr(sText, "ARN:")
iStart = iStart + 4
iEnde = InStr(sText, "Tran Amt:")
Cells(lRow, 4) = Mid(sText, iStart, iEnde - iStart)
iStart = InStr(sText, "Tran Amt:")
iStart = iStart + 9
iEnde = InStr(sText, "Acquirer:")
Cells(lRow, 5) = Replace(Trim(Mid(sText, iStart, iEnde - iStart)), ".", ",")
iStart = InStr(sText, "Pre-Arbitration?")
iStart = iStart + 16
iEnde = InStr(sText, "Days Given to Respond:")
Cells(lRow, 6) = Mid(sText, iStart, iEnde - iStart)
Name sPath & sFile As sPath & "gelesen" & "\" & sFile 'Datei verschieben
sFile = Dir
Loop
End Sub

Gruß
Rudi

Anzeige
AW: so geht es mit mehreren Dateien
27.03.2014 11:36:07
Andreas
Hallo Rudi,
1000 Dank...
Leider funktioniert der Code auch nur mit den dateien die auch mit dem alten Code importiert wurden.
Wenn ich eine Datei mit Inhalten die etwas verschoben sind (aber gleiche Begriffe beinhalten) importiere kommt ein Laufzeitfehler '5':Ungültiger Prozeduraufruf oder ungültiges Argument.
Im Debug-Modus wird dann folgender Befehl gelb markiert(fett):
iStart = InStr(sText, "Pre-Arbitration?")
iStart = iStart + 16
iEnde = InStr(sText, "Days Given to Respond:")
Cells(lRow, 6) = Mid(sText, iStart, iEnde - iStart)
Hast Du eine Idee woran das liegen kann?
Vielen Dank und VG
Max

Anzeige
AW: so geht es mit mehreren Dateien
27.03.2014 11:40:34
Rudi
Hallo,
noch ne Variante:
Sub aaaa()
Dim sFile As String, sPath As String
Dim sText As String, sTmp As String
Dim lRow As Long
Dim iStart As Integer, iEnde As Integer, i As Integer
Dim arrStart, arrEnde
Application.ScreenUpdating = False
sPath = "c:\test\test\" 'Ordner mit .txt
'Suchbegriffe
arrStart = Array("Merchant:", "Card/Acct #:", "ARN:", "Tran Amt:", "Pre-Arbitration?")
arrEnde = Array("Tran ID:", "Tran Type:", "Tran Amt:", "Acquirer:", "Days Given to Respond:")
If Dir(sPath & "gelesen", vbDirectory) = "" Then
MkDir sPath & "gelesen" 'Ordner für gelesene .txt
End If
sFile = Dir(sPath & "*.txt")
If sFile = "" Then
MsgBox "Keine .txt in " & sPath, vbInformation, "Gebe bekannt..."
Else
Do While sFile  ""
sText = ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
Do While Not EOF(1)
Line Input #1, sTmp
sTmp = Replace(sTmp, vbTab, "")
sTmp = WorksheetFunction.Trim(sTmp)
If i = 4 Then Cells(lRow, 1) = Left(sTmp, 7)  'Status
sText = sText & sTmp
Loop
Close #1
For i = 0 To UBound(arrStart)
iStart = InStr(sText, arrStart(i), vbTextCompare)
iEnde = InStr(sText, arrEnde(i), vbTextCompare)
iStart = iStart + Len(arrStart(i))
Cells(lRow, i + 2) = Mid(sText, iStart, iEnde - iStart)
Next i
Name sPath & sFile As sPath & "gelesen" & "\" & sFile 'Datei verschieben
sFile = Dir
Loop
End If
End Sub

Wenn das nicht klappt, solltest du auch mal eine 'verschobene' .txt hochladen.
Gruß
Rudi

AW: so geht es mit mehreren Dateien
27.03.2014 12:15:29
Andreas
Hi Rudi,
mit dem Code erhalte ich auch bei den Dateien die vorher importiert werden konnten einen Laufzeit fehler...
Laufzeitfehler 13: Typen unverträglich.
Debug-Modus
For i = 0 To UBound(arrStart)
iStart = InStr(sText, arrStart(i), vbTextCompare) iEnde = InStr(sText, arrEnde(i), vbTextCompare)
iStart = iStart + Len(arrStart(i))
Cells(lRow, i + 2) = Mid(sText, iStart, iEnde - iStart)
Next i
1000 Dank für Deine Hilfe!
VG
Max

Datei? owT
27.03.2014 12:39:35
Rudi

AW: Datei? owT
27.03.2014 13:16:02
Andreas
Hallo Rudi,
anbei ein Beispiel für eine verschobene datei...Aber wie gesagt bei dem letzten Code gingen auch die Dateien die vorher funktionierten nicht...
Vielen Dank und viele Grüße
Max
https://www.herber.de/bbs/user/89876.txt

tw. gelöst
27.03.2014 13:32:16
Rudi
Hallo,
gibt es eine ander Möglichkeit den Satus zu ermittel, außer den ersten 7 Zeichen in Zeile 4?
Sub aaaa()
Dim sFile As String, sPath As String
Dim sText As String, sTmp As String
Dim lRow As Long
Dim iStart As Integer, iEnde As Integer, i As Integer
Dim arrStart, arrEnde
Application.ScreenUpdating = False
sPath = "c:\test\test\" 'Ordner mit .txt
'Suchbegriffe
arrStart = Array("Merchant:", "Card/Acct #:", "ARN:", "Tran Amt:", "Pre-Arbitration?")
arrEnde = Array("Tran ID:", "Tran Type:", "Tran Amt:", "Acquirer:", "Days Given to Respond:")
If Dir(sPath & "gelesen", vbDirectory) = "" Then
MkDir sPath & "gelesen" 'Ordner für gelesene .txt
End If
sFile = Dir(sPath & "*.txt")
If sFile = "" Then
MsgBox "Keine .txt in " & sPath, vbInformation, "Gebe bekannt..."
Else
Do While sFile  ""
i = 0
sText = ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, sTmp
sTmp = Replace(sTmp, vbTab, "")
sTmp = WorksheetFunction.Trim(sTmp)
If i = 4 Then Cells(lRow, 1) = Left(sTmp, 7)  'Status
sText = sText & sTmp
Loop
Close #1
For i = 0 To UBound(arrStart)
iStart = InStr(1, sText, arrStart(i), vbTextCompare)
iEnde = InStr(1, sText, arrEnde(i), vbTextCompare)
iStart = iStart + Len(arrStart(i))
Cells(lRow, i + 2) = Trim(Mid(sText, iStart, iEnde - iStart))
Next i
Name sPath & sFile As sPath & "gelesen" & "\" & sFile 'Datei verschieben
sFile = Dir
Loop
End If
End Sub

Gruß
Rudi

AW: tw. gelöst
27.03.2014 13:40:53
Andreas
Hi Rudi,
die Info für den Status steht immer zwischen "Visa Resolve Online" und "Questionnaire:".
Vielleiht kann man es so auswählen?
Vielen Dank und viele Grüße
Max

in der .txt von gestern....
27.03.2014 13:49:36
gestern....
Hallo,
kommt Visa Resolve Online nicht vor.
Gruß
Rudi

AW: Datei? owT
27.03.2014 13:27:55
Andreas
Hi Rudi,
also irgendetwas läuft hier bei dem Upload des files falsch....Da kommt nur Schrott raus. Normal sieht die Datei ganz anders aus...
VG
Max

Schrott
27.03.2014 13:39:43
Rudi
Hallo,
pack die Dateien in ein ZIP und lade das hoch.
Gruß
Rudi

erneuter Versuch
27.03.2014 15:38:10
Rudi
Hallo,
Sub aaaa()
Dim sFile As String, sPath As String
Dim sText As String, sTmp As String
Dim lRow As Long
Dim iStart As Integer, iEnde As Integer, i As Integer
Dim x As Integer, arrText
Dim arrFields, arrReplace
Application.ScreenUpdating = False
sPath = "c:\test\test\" 'Ordner mit .txt
'Suchbegriffe
arrFields = Array("Visa Resolve Online", "Merchant", "Card/Acct #", "ARN", "Tran Amt", _
"Pre-Arbitration?")
arrReplace = Array("Visa Resolve Online", "Merchant", "Card/Acct #", "ARN", "Tran Amt", _
"Pre-Arbitration?", "Location", "Questionnaire", "Tran ID", "Tran Type", "Acquirer", _
"Days Given to Respond")
If Dir(sPath & "gelesen", vbDirectory) = "" Then
MkDir sPath & "gelesen" 'Ordner für gelesene .txt
End If
sFile = Dir(sPath & "*.txt")
If sFile = "" Then
MsgBox "Keine .txt in " & sPath, vbInformation, "Gebe bekannt..."
Else
Do While sFile  ""
i = 0
sText = ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
Do While Not EOF(1)
Line Input #1, sTmp
sTmp = Replace(sTmp, vbTab, "")
sTmp = WorksheetFunction.Trim(sTmp)
For i = 0 To UBound(arrReplace)
sTmp = Replace(sTmp, arrReplace(i), "|" & arrReplace(i) & "|")
Next
sTmp = Replace(sTmp, ":", "")
sText = sText & sTmp
Loop
Close #1
arrText = Split(sText, "|")
For i = 0 To UBound(arrFields)
x = Application.Match(arrFields(i), arrText, 0)
sTmp = arrText(x)
Cells(lRow, i + 1) = Trim(sTmp)
Next i
Name sPath & sFile As sPath & "gelesen" & "\" & sFile 'Datei verschieben
sFile = Dir
Loop
End If
End Sub

Gruß
Rudi

AW: erneuter Versuch
28.03.2014 12:01:22
Andreas
Hallo Rudi,
vielen Dank!!! Das sieht super aus. Es funktioniert jetzt mit den verschobenen Dateien einwandfrei...
Allerdings habe ich jetzt das Problem bei einer Datei (siehe Anhang) die vorher ging und jetzt nicht mehr...
Da kommt wieder ein Laufzeitfehler 13 Typen unverträglich...
Im Debug Modus
arrText = Split(sText, "|")
For i = 0 To UBound(arrFields)
x = Application.Match(arrFields(i), arrText, 0)
sTmp = arrText(x)
Cells(lRow, i + 1) = Trim(sTmp)
Es wäre super, wenn Du das noch lösen könntest.
1000 Dank und viele Grüße
Max
https://www.herber.de/bbs/user/89907.txt

AW: erneuter Versuch
28.03.2014 12:42:07
Rudi
Hallo,
dafür habe ich keine Lösung.
In der Datei fehlt 'Visa Resolve Online'.
Gruß
Rudi

AW: VBA Code für import von .txt Dateien
27.03.2014 10:03:52
.txt
Hallo Thorsten,
super, vielen Dank für Deine Hilfe!!! Kannst Du mir bitte kurz erklären welche Zeilen im Code die Auswahl der Daten in der Textdatei veranlassen. Ich habe beim testen bemerkt, dass es die eine oder andere Textdatei gibt wo die daten etwas verschoben sind und wollte versuchen dies über die Auswahlkriterien der Daten versuchen.
Vielen Dank!
VG
Max

AW: VBA Code für import von .txt Dateien
27.03.2014 10:51:12
.txt
Hi Andreas
ich bin übrigens NICH Thomas^^
ich versuch ma mein Glück am Bsp nur einer txt-Datei.
sText = sText & sTmp & vbCr
sText erhält alle in der txt-Datei gespeicherten Zeilen
bedeutet, der komplette Inhalt der txt-Datei befindet sich nun in sText
wir wollen aber jede einzelne Zeile überprüfen, deswegen...
sarrTxt = Split(sText, vbCr)
sarrTxt ist eine Arrayvariable.
Ein Array kann man sich wie einen Schrank mit vielen Schubladen vorstellen.
Jede Zeile in sText wird von der nächsten Zeile durch einen Zeilenumbruch (vbCr) unterschieden
Deswegen wird im "Schrank" sarrTxt jede Zeile in eine neue "Schublade" gesteckt.
So hast du nun einen Schrank mit genau so vielen Schubladen, wie in sText Zeilen vorhanden sind.
Und nun kannst du jede Schublade einzeln öffnen und den Inhalt einer jeden Schublade einzeln überprüfen.
Cells(lRow, 1) = Left(sarrTxt(3), 7) 'Status Zeile 4
lRow bestimmt die nächste freie Zeile in deiner Excel-Datei.
1 bestimmmt die Spalte, hier Spalte A
So erhält also Zelle A? einen bestimmten Inhalt aus der VIERTEN "Schublade" des "Schrankes" sarrTxt.
Obwohl im Code sarrTxt(3), ist es die vierte Schublade.
Die Schubladen in einem Array beginnen immer bei 0 zu zählen. (Standardvorgabe)
Deswegen...
0 = 1. Schublade
1 = 2. Schublade
2 = 3. Schublade
3 = 4. Schublade
So, der bestimmte Teil aus Schublade 4 ergibt sich aus
Left(sarrTxt(3), 7)
So erhält also die oben erwähnte Zelle nur die ersten 7 Zeichen aus Schublade 4
arrTmp = Split(sarrTxt(6), ":")
arrTmp ist ein neuer Schrank, dessen Schubladen nun - getrennt durch : - die Inhalte aus der 7. Schublade des ersten Schranks erhält
Cells(lRow, 2) = Trim(arrTmp(3))
in der gleichen freien Zeile wie schon zuvor, aber in Spalte 2 (B) wird nun der Inhalt aus Schublade 4 vom 2. Schrank eingefügt.
Trim entfernt nur Leerzeichen, die am Anfang oder Ende des Inhaltes aus Schublade 4 stehen.
So, oder sehr ähnlich, wiederholt es sich im folgenden Code.
Ich hoffe, du hast verstanden, was ich versucht habe, zu erklären?
Ciao
Thorsten

AW: VBA Code für import von .txt Dateien
27.03.2014 11:10:18
.txt
Hi Thorsten,
vielen Dank!!! Ich habe es verstanden.
VG
Max

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige