Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Txt-Auslesen geht nur im Einzelschritt

Forumthread: Txt-Auslesen geht nur im Einzelschritt

Txt-Auslesen geht nur im Einzelschritt
10.12.2020 10:26:04
Nina
Hallo an alle VBA-Experten!
Ich habe mal wieder ein kleines Problem mit meinem Makro:
Ich versuche eine txt-Datei einzulesen (hat zwischen 200 - 1000 Zeilen) und die eingelesenen Daten auf verschiedene Tabellenblätter zu verteilen.
Die Zeilen in der txt-Datei sind so aufgebaut:z.B. 5 (Prüfziffer) 45 (Ident-Nummer) "Text der mich interessiert" also = 5 45 "Text"
Die Identnummer ist einmalig und ich verwende sie als dann als Zeilennummer und sie definiert auch, auf welches Tabellenblatt der Text soll.
Das Problem ist jetzt, dass mein Makro funktioniert, solange ich es im Einzelschritt durchgehe, aber sobald ich es einfach "laufen" lasse, ist es bereits nach einer Sekunde angeblich fertig und hat keine einzige Zeile aus dem txt übernommen.
Kann mir vielleicht jemand sagen, wo mein Fehler liegt?
Private Sub cmdImport_Click()
Dim x As String
Dim Filenum As Integer
Dim AnzahlLEN As Integer
Dim Start As Integer
Dim Nummer As Integer
Dim Posnr As String
Dim Zeile As Integer
Dim arrSplitStrings1() As String
Dim Text As String
If DateiNameTXT = "" Or txtMappeTXT = "" Then
MsgBox ("Bitte wählen Sie eine gültige Datei aus!")
Exit Sub
End If
Filenum = FreeFile()
Open MappeTXT For Input Access Read As #Filenum
Do While Not EOF(Filenum)
Line Input #Filenum, x
AnzahlLEN = Len(x) 'Länge der gesamten Zeile
Start = AnzahlLEN - 2  'Erste Zahl und Leerzeichen sollen abgeschnitten werden
Posnr = Right(x, Start)
arrSplitStrings1 = Split(Posnr, " ")
Nummer = arrSplitStrings1(0)
Text = Replace(Posnr, Nummer, "")
Text = Replace(Text, Chr(34), "")
Text = Trim(Text)
If Nummer 1000 And Nummer 2000 And Nummer 3000 And Nummer 4000 And Nummer 7000 And Nummer 8000 And Nummer
Vielen Dank bereits im Voraus !
Nina
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: auffällig
10.12.2020 10:49:18
Fennek
Hallo Nina,
auf den ersten Blick aufgefallen ist

Open MappeTXT For Input Access Read As #Filenum
Warum "Access Read" und nicht nur "Input"?
Mit "Select Case" kann man die Bedingeung übersichtlicher strukturieren (case number 1000-2000).
mfg
Anzeige
AW: auffällig
10.12.2020 10:53:54
Nina
Hallo Fennek,
vielen Dank für deine Antwort!
Ich habe das 'Access Read' jetzt mal rausgenommen, aber trotzdem übernimmt er mir nichts. Das ist echt mysteriös :-D
Und du hast recht, mit Select case ist die Auswahl schöner, hatte ich gar nicht dran gedacht.
Gruß
Nina
AW: Beispiele
10.12.2020 10:56:17
Fennek
Hallo,
wenn Du für jeden Fall ein Beispiel zeigst, lasse ich den Code einmal durchlaufen. Nur so kann ich etwas kokretes dazu sagen.
mfg
Anzeige
AW: Txt-Auslesen geht nur im Einzelschritt
10.12.2020 10:56:26
UweD
Hallo
wo werden den die Variablen belegt?
DateiNameTXT
txtMappeTXT
MappeTXT (Ist das extl txtMappeTXT?)
LG UweD
AW: Txt-Auslesen geht nur im Einzelschritt
10.12.2020 11:09:16
Nina
Hallo Uwe,
Vielen Dank für deine Antwort!
Das sind globale Variablen, die in einem anderen Sub ihren Werten bekommen.
DateiNameTXT ist nur der Dateiname ohne Pfad (Daten.txt)
MappeTXT ist der gesamte Pfad der Datei (C:.../Daten.txt)
txtMappeTXT ist nur aus der Userform, in welcher der Nutzer noch einmal den Pfad überprüfen kann.
Ich habe jetzt noch die Select Case Anmerkung von Fennek mit eingetragen, jetzt nörgelt er, dass es ein 'Loop' ohne 'Do' gibt. Heute ist Excel irgendwie gegen mich xD
Private Sub cmdImport_Click()
Dim x As String
Dim Filenum As Integer
Dim AnzahlLEN As Integer
Dim Start As Integer
Dim Nummer As Integer
Dim Posnr As String
Dim Zeile As Integer
Dim arrSplitStrings1() As String
Dim Text As String
If DateiNameTXT = "" Or txtMappeTXT = "" Then '*Beides globale Variablen
MsgBox ("Bitte wählen Sie eine gültige Datei aus!")
Exit Sub
End If
Filenum = FreeFile()
Open MappeTXT For Input As #Filenum
Do While Not EOF(Filenum)
Line Input #Filenum, x
AnzahlLEN = Len(x)
Start = AnzahlLEN - 2
Posnr = Right(x, Start)
arrSplitStrings1 = Split(Posnr, " ")
Nummer = arrSplitStrings1(0)
Text = Replace(Posnr, Nummer, "")
Text = Replace(Text, Chr(34), "")
Text = Trim(Text)
Select Case Nummer
Case 1 To 1000
Zeile = Nummer + 1
Worksheets("A").Cells(Zeile, 4) = Text
Case 1001 To 2000
Zeile = Nummer - 1000 + 1
Worksheets("B").Cells(Zeile, 4) = Text
Case 2001 To 3000
Zeile = Nummer - 2000 + 1
Worksheets("C").Cells(Nummer, 4) = Text
Case 3001 To 4000
Zeile = Nummer - 3000 + 1
Worksheets("D").Cells(Nummer, 4) = Text
Case 4001 To 5000
Zeile = Nummer - 4000 + 1
Worksheets("E").Cells(Nummer, 4) = Text
Case 7001 To 8000
Zeile = Nummer - 7000 + 1
Worksheets("F").Cells(Nummer, 4) = Text
Case 8001 To 9000
Zeile = Nummer - 8000 + 1
Worksheets("G").Cells(Nummer, 4) = Text
Loop
Close #Filenum
Unload Me
End Sub
Leider kann ich keine Beispielmappe hochladen, da diese Firmeninterna beinhalten.
Gruß
Nina
Anzeige
AW: Txt-Auslesen geht nur im Einzelschritt
10.12.2020 11:12:41
UweD
Es fehlt jetzt ein End Select nach dem letzten Case
AW: end select vor loop (owT)
10.12.2020 11:12:59
Fennek
AW: end select vor loop (owT)
10.12.2020 12:00:46
Nina
Danke Fennek,
Hab ich eingefügt. Leider überträgt es die daten immernoch nicht.
Anzeige
Da musst du und eine Musterdatei senden
10.12.2020 12:02:17
UweD
Sowohl die Excel als auch die TXT
LG UweD
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige