Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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

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

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
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.
Da musst du und eine Musterdatei senden
10.12.2020 12:02:17
UweD
Sowohl die Excel als auch die TXT
LG UweD

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige