Problem mit Daten einlesen

Blecus

Grünschnabel
Also ich bin gerade dabei ein Programm zu schreiben welches aus einem Ordner alle textfiles öffnet, darin nach texten sucht und mir die anzahl angibt wieoft ein Wort vorkommt...

Nachdem ich auch schon einiges zusammen gebaut habe... funktioniert leider der letzte Teil nicht...

Und zwar folgendes problem:

Ich lasse den User einen Pfad auswählen... dieser Pfad schreibt sich in ein textfeld.. dann beginnt das Programm in diesem Pfad nach textfiles zu suchen... sobald er eine textfile gefunden hat schreibt er diese mit dem pfad in ein neues textfeld.. so nun gebe ich diesem textfeld eine variable .. sagen mir mal

dim pfad as string
pfad = textfeld2.text



Das problem:

Sobald ich auf den button drücke um die suche zu starten.. also in jeder einzelnen file..
schreibt er mir:

"Typen unverträglich"

nungut ich bin mir sicher dass es mit der variable zutun hat.. da sie eventuell kein String ist aber ich hab schon so ziemlich jede variante ausprobiert und nichts hat funktioniert...


Ich bitte um hilfe...

Hier noch ein teil des Codes der wichtig sein könnte:

Private Sub Command2_Click()
If Text1.Text = "" Then
MsgBox ("Bitte wähle zuerst den Pfad indem sich deine Textlogs befinden")
Else
Dim strDatei As String
Dim pfad As String
'Dir mit Pfad aufrufen!
strDatei = VBA.Dir(Text1.Text & "\", vbNormal)
While Len(strDatei) > 0
'pfad schreibt sich nochmal in ein neues textfeld aber diesmal auch mit filename:
Text2.Text = (Text1.Text & strDatei)
pfad = Text2.Text
Dim ReadFile As String
Dim FileNr As String
Dim strfileline As String
Dim insgesamt As Integer
Open pfad For Binary As #FileNr
On Error GoTo er
Do Until (EOF(FileNr))



Edit: Problem gefunden hab der variable filenr nicht = freefile zugewiesen
aber hab nun ein neues problem...



jetzt kommt der fehler:
einlesen hinter dateiende
 
Zuletzt bearbeitet:
Nunja ich weiß schon dass dieser Fehler kommt wenn man eine Leere Zeile am ende der Textfile hat jedoch haben diese Textfiles generell keine Leeren zeilen am ende und ich hab auch gerade nochmal kontrolliert.. Das einzige was ich mir vorstellen könnte ist der Name der Datei der folgendermaßen aussieht:

text text date time.txt

Also 3 Leerzeichen im Titel.


Liegt es vielleicht daran und wenn ja wie kann ich das umgehen?

Danke schonmal im vorraus


Edit: Habe gerade getestet ob es an diesen 3 Leerzeichen im titel liegt indem ich einfach 2 davon in text.txt umbenannt und in einen neuen Ordner kopiert habe. Leider immernoch der selbe Fehler


Ich poste mal den ganzen code für diese Sub.. Vielleicht hilft es weiter:

Private Sub Command2_Click()
If Text1.Text = "" Then
MsgBox ("Bitte wähle zuerst den Pfad indem sich deine Textlogs befinden")
Else
Dim strDatei As String
Dim pfad As String
'Dir mit Pfad aufrufen!
strDatei = VBA.Dir(Text1.Text & "\", vbNormal)
While Len(strDatei) > 0
'pfad schreibt sich nochmal in ein neues textfeld aber diesmal auch mit filename:
Text2.Text = (Text1.Text & strDatei)
pfad = Text2.Text
Dim ReadFile As String
Dim FileNr As String
Dim strfileline As String
Dim insgesamt As Integer
FileNr = FreeFile
Open pfad For Binary As #FileNr
On Error GoTo er
Do While Not (EOF(FileNr))
Line Input #FileNr, strfileline
textinvi.Text = strfileline
If textinvi.Text Like "*gesuchter text*" Then
txtgesucht.Caption = txtgesucht.Caption + 1
Else
End If
textinvi.Text = ""
Close #FileNr
er:
Loop
'Nächste Datei ermitteln:
strDatei = VBA.Dir
Wend
End If
End Sub


Edit: Okay habe den Fehler gefunden er hat bei text2.text das \ vergessen also hat er den Ordner und danach die textfile ohne \ angezeigt somit hat sich eine neue Datei in vorherigen Ordner erstellt die 0 byte groß war und ein somit ein leerzeichen erhalten war.. habe nun

Text2.Text = (Text1.Text & "\" & strDatei)

geändert jedoch erneut ein fehler:

Dateiname oder -nummer falsch
 
Zuletzt bearbeitet:
Fehler gefunden:

Es lag an diesem Codeteil:

Close #FileNr
er:
Loop
'Nächste Datei ermitteln:
strDatei = VBA.Dir
Wend
End If
End Sub


Lösung:

Er hat die datei schon geschlossen bevor er mit EOF fertig war
nach ich close #filenr
nach
loop
also:

er:
Loop
'Nächste Datei ermitteln:
strDatei = VBA.Dir
Close #FileNr
Wend
End If
End Sub

geschrieben habe funkt es..


Danke für die hilfe..
 
Zurück