Wert von EOF(1) verändern

Bild

Betrifft: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 08:56:53

Hallo,

ich habe da ein kleines Problem.

Wenn ich die MS-Hilfe richtig verstanden habe, zeigt EOF(1) (wenn der Wert True ist)an das ich mich am ende einer Datei befinde. Nun möchte ich diesen Wert nach durchlaufen einer schleife wieder auf False setzen. Und genau das bekomme ich nicht hin. Geht das eigentlich??

Gruß
Claudia

Bild


Betrifft: AW: Wert von EOF(1) verändern von: Luschi
Geschrieben am: 05.02.2005 09:27:12

Hallo Claudia,

wie meist sind die Beispiele in der Vba-Hilfe etwas ungenau. So wird es Passender.

Dim datNr As Integer
datNr = FreeFile                  'holen einer freien Datei-Nummer
Open "DATEI1" For Input As datNr  'Datei zum Einlesen öffnen.
Do While Not EOF(datNr)           'auf Dateiende abfragen.
    Line Input #1, Dateidaten     'Datenzeilen lesen.
    Debug.Print Dateidaten        'Daten im Direktfenster ausgeben.
Loop
Close #1 
Die freie Datei-Nummer zum Öffnen der txt-Datei bestimmt das Betriebssystem über die Funktion FreeFile. EOF (Dateiende) und BOF (Dateianfang) sind schreibgeschützte Werte.
Die Position des Datenzugriffs-Cursors bestimmt, welchen Wert BOF und EOF haben.
Gruß von Luschi
aus klein-Paris


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 10:55:30

Hallo Luschi,

leider hilft mir dies nicht ganz weiter.
Die schleife geht leider nur einmal. Speicherst du excel ab und öffnest es dann noch einmal geht vba nicht wieder in die schleife rein. Aus diesem grund muss ich das makro so überlisten, dass es den Datenzeiger beim öffnen von excel immer an den Anfang setzt.

Und deswegen wollte ich eigentlich den EOF wert verändern.

Gruß
Claudia


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Ulf
Geschrieben am: 05.02.2005 11:11:42

...und wozu soll das Ganze dienen? Ggf. gibts ja eine andere Lösung.

Ulf


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 11:21:12

hallo,

ich möchte durch clicken auf einen Button eine TXT-datei einlesen. Das habe ich soweit auch hinbekommen. Das Problem liegt nun darin, dass wenn ich die Exceldatei schliesse und später wieder öffnen möchte das ganze nicht. Beim Debuggen geht er nicht mehr in die scheife zum auslesen hinein. Ich kann leider die TXT-datei nicht nur einmal einlesen weil sich die daten ändern können. Aus diesem Grund muss ich die gleiche Datei zu jedem zeitpunkt immer wieder einlesen können.

Gruß
Claudia


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Ulf
Geschrieben am: 05.02.2005 11:22:40

Sorry, verstehe ich nicht, noch offen.

Ulf


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 11:37:14

Hallo,

also ich möchte eine txt-datei öffters einlesen. Erstelle ich eine neue Excel-datei mit dem Makro zu einlesen dann liest mir dieses die TXT-datei einmal ein.
Speichere ich die Ecel-datei ab und öffne sie z.B. 2 Tage später funktioniert das Makro nicht mehr, weil der Datenzeiger am ende der TXT-datei steht.
Nun möchte ich es hinbekommen, dass dies doch funktioniert. Es muss eigentlich gehen, weil wenn man ein makro aufnimmt kann man diese auch mehrmals nutzen. Bei dieser Lösung hatte ich allerdings das Problem das ich einen festen Pfad eingeben musste und das möchte ich nicht.

Gruß
Claudia


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Josef Ehrensberger
Geschrieben am: 05.02.2005 11:29:32

Hallo Claudia!

Zeig doch mal den Code zum einlesen!

Wie wird der Code gestartet?


Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 11:46:52

Hallo,

also
ausgelöst wird er durch:


Private Sub ButEinlesen_Click()
        einlesen.einlesen
        
End Sub


Sub einlesen()

Dim StrDaten As String
Dim StrModulNr As String
Dim StrZeile As String
Dim StrSpalte As String
Dim IntSpalte As Integer
Dim IntZeile As Integer

Open "BestesIndividuum.txt" For Input As #1


Do Until EOF(1)
IntSpalte = 1
IntZeile = 1
StrDaten = Input(5, #1)
StrModulNr = StrDaten
StrDaten = Input(1, #1)
Do While StrDaten = " "
StrDaten = Input(1, #1)
Loop

If StrDaten <> " " Then
StrZeile = StrDaten
StrDaten = Input(1, #1)
Do While StrDaten <> " "
StrZeile = StrZeile + StrDaten
StrDaten = Input(1, #1)
Loop
End If
Do While StrDaten = " "
StrDaten = Input(1, #1)
Loop
If StrDaten <> " " Then
StrSpalte = StrDaten
'Dim StrTest As String
StrDaten = Input(1, #1)
Do While StrDaten <> Chr(13)
StrSpalte = StrSpalte + StrDaten
StrDaten = Input(1, #1)
Loop
End If
If StrDaten = Chr(13) Then
StrDaten = Input(1, #1)

End If
'StrDaten = dat.read(2)

Do While Cells(IntZeile, IntSpalte) <> ""
IntZeile = IntZeile + 1
Loop
If Cells(IntZeile, IntSpalte) = "" Then
Cells(IntZeile, IntSpalte) = StrModulNr
IntSpalte = IntSpalte + 1
Cells(IntZeile, IntSpalte) = StrZeile
IntSpalte = IntSpalte + 1
Cells(IntZeile, IntSpalte) = StrSpalte

End If

Loop

Close #1



End Sub


Der code wie gesagt funktioniert allerdings nur einmal und ich bräuchte dies häufiger.

Gruß Claudia


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Josef Ehrensberger
Geschrieben am: 05.02.2005 11:56:39

Hallo Claudia!

Ich hab' keine lust mir diesen Code reinzuziehen!

Einfacher wäre es, wenn du beschreibst, welche Daten aus dem Textfile du benötigst
und welche Strucktur das Textfile besitzt! (evtl. Beispiel der Textdatei hochladen)

Dann kann ich dir bestimmt eine Lösung anbieten.


Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 12:23:48

Eine Bsp. TXT-Datei hab ich gerade hochgeladen.

Ich benötige sämtliche Informationen aus den Zeile.


TXT-Datei zeile 1: W1121 0 0
zeile 2: W1321 0 1

Die Ausgabe in Excel sollte wie folgt dann aussehen.

In Zelle A1: W1121
In Zelle B1: 0
In Zelle C1: 0

In Zelle A2: W1321
In Zelle B2: 0
In Zelle C2: 1

die nächsten zeile der TXT-Datei natürlich in die nächsten zeile.

Gruß Claudia


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Josef Ehrensberger
Geschrieben am: 05.02.2005 12:52:50

Hallo Claudia!

Wenn die Textdateiimmer gleich aufgebaut ist, dann müsste das reichen.



      
Sub einlesen()
Dim arr As Variant
Dim tmp As String
Dim n As Integer
Dim lastRow As Long

lastRow = IIf(Range(
"A65536") <> "", 65536, Range("A65536").End(xlUp).Row)

   
Open "BestesIndividuum.txt" For Input As #1
   
      
Do While Not EOF(1)
      
      lastRow = lastRow + 1
            
      
Input #1, tmp
      
      arr = Split(tmp, 
" ")
      
      
On Error Resume Next
      
         
For n = 0 To 2
            Cells(lastRow, n + 1) = arr(n)
         
Next
         
      
On Error GoTo 0
      
      
Loop
   
   
Close #1
        
    
End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0


Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 13:35:25

Hallo Sepp,

dein Code funktioniert leider auch nur beim erstenmal. Speichere ich die Exceldatei ab und öffne sie danach wieder kann er die TXT-datei nicht einlesen. Das Makro geht nicht mehr in die while-schleife hinein.

Gruß
Claudia


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Josef Ehrensberger
Geschrieben am: 05.02.2005 13:41:33

Hallo Claudia!

Mein Makro funktioniert auch tausend mal!

Hast du vieleicht ein Problem mit dem Pfad zur Textdatei?


Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 13:59:35

Hallo Sepp,

bei mir geht es nicht erfindet zwar die Datei, ich hab sie auch einmal hineingeladen. Anschliessend hab ich die Daten gelöscht und die Excel-datei gespeichert. Anschliessend hab ich sie noch einmal geöffnet und sie hat nichts mehr ausgelesen.
Ich stelle mal eine Mappe hoch vielleicht siehst du ja den fehler

https://www.herber.de/bbs/user/17497.zip

Gruß Claudia


Bild


Betrifft: Pfadangabe zur Datei von: Kurt
Geschrieben am: 05.02.2005 16:01:19

hi,
Josef hat 100%ig recht
gib den Pfad zur Textdatei venünftig an und du wirst sehen es funktioniert
...und Tschüss Kurt


Bild


Betrifft: DANKE!! von: Claudia
Geschrieben am: 05.02.2005 16:45:14

Hallo,

danke an euch ich war zu blind um das Problem zu lösen.

Jetzt geht es.


Bild


Betrifft: @Claudia! Zusatzinfo. von: Josef Ehrensberger
Geschrieben am: 05.02.2005 17:55:04

Hallo Claudia!

Kleine Zusatzinfo zur "Open" Methode.

Wenn "Open" das angegebene File nicht findet, wird es automatisch erstellt!
Dadurch waren in deinem Fall, keine daten vorhanden, die ausgelesen werden konnten.



Bis dann, Sepp


Bild


Betrifft: AW: @Sepp Zusatzinfo. von: Kurt
Geschrieben am: 05.02.2005 21:58:23

hi Sepp,
sorry aber das stimmt in diesem Fall nicht !
Zitat Excel-Hilfe:
Wenn die durch Pfadname angegebene Datei nicht existiert, wird sie angelegt, sobald eine Datei im Modus Append, Binary, Output oder Random geöffnet wird
...und Tschüss Kurt


Bild


Betrifft: Du hast natürlich recht! o.T. von: Josef Ehrensberger
Geschrieben am: 05.02.2005 22:08:44

Gruß Sepp


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Jens_Pu
Geschrieben am: 05.02.2005 12:04:18

Hallo Claudia,

ohne jetzt Deinen kompletten Code geprüft zu haben,
Du setzt intZeile = 1 innerhalb der Do While.
Später prüfst Du ob in den Zellen was steht.
Beim 2. Durchlauf steht da dann doch schon was, oder?

Gruß Jens


Bild


Betrifft: AW: Wert von EOF(1) verändern von: Claudia
Geschrieben am: 05.02.2005 12:25:25

Hallo Jens,

hast recht aber das ist nicht das Problem es wird nur unnütz überprüft.

Gruß Claudia


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tabelle ausdrucken"