Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

FileEinlesen - EOF geht anscheinend nicht

Forumthread: FileEinlesen - EOF geht anscheinend nicht

FileEinlesen - EOF geht anscheinend nicht
Holger
Hallo nochmal,
ich will die Spaltenbreiten meiner Blätter automatisch setzen.
Alle Spaltenbreiten sind in einer Text Datei. Nun will ich dieses
einlesen und pro Spalte den Wert suchen.
Es geht um die Spalten 1 -20, ich benutze einen Zähler
und will jetzt immer den jeweiligen Wert suchen.
Nur wie kann ich beim Fileeinlesen nur eine bestimmte Zeile ansprechen?
Sub GehtindenLeerlauf
For intZ = 1 To 20
intRow = 0
Open COLWIDTHtxt For Input As #1
Do While Not EOF(1)
intRow = intRow + 1
If intRow = intZ Then
Line Input #1, lInhalt
intColWidth = lInhalt
intColWidth = Left(intColWidth, 4)
ElseIf intRow > 20 Then Close #1
End If
Loop
Close #1
ActiveSheet.Columns(intZ).ColumnWidth = intColWidth
Next intZ
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: FileEinlesen - EOF geht anscheinend nicht
29.11.2010 11:39:11
Oberschlumpf
Hi Holger
Versuch es mal so:
(ungetestet, weil ich keine Lust hatte, eine txt-Datei mit 20 Werten für Spaltenbreite zu erstellen)
Sub GehtindenLeerlauf()
For intZ = 1 To 20
intRow = 0
Open COLWIDTHtxt For Input As #1
Do While Not EOF(1)
intRow = intRow + 1
Line Input #1, lInhalt
If intRow = intZ Then
intColWidth = lInhalt
intColWidth = Left(intColWidth, 4)
ActiveSheet.Columns(intZ).ColumnWidth = intColWidth
Exit Do
End If
Loop
Close #1
Next intZ
End Sub

- Mein Code startet zuerst die For/Next-Schleife
- Dann wird die Datei geöffnet
- Nur, wenn dein manueller Zähler mit dem Schleifenzähler gleich ist, wird die Var intColWidth gefüllt und angepasst, und die richtige Spalte erhält die von dir gewünschte Breite
- die Do/Loop-Schleife wird nun sofort verlassen
- die Datei wird geschlossen, und der nächste Schleifendurchlauf beginnt.
Hilfts?
Ciao
Thorsten
Anzeige
Danke, das ...
29.11.2010 13:34:26
Holger
... Exit Do hat mir gefehlt.
Ich probiere es gleich mal aus.
AW: FileEinlesen - EOF geht anscheinend nicht
29.11.2010 11:52:33
Rudi
Hallo,
wie sieht denn die .txt aus?
Sub GehtindenLeerlauf()
Dim sSpalten, arrSpalten, i As Integer
Open COLWIDTHtxt For Input As #1
sSpalten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
arrSpalten = Split(sSpalten(4), vbTab) '4=Daten in 5.Zeile
For i = 0 To UBound(arrSpalten)
ActiveSheet.Columns(i + 1).ColumnWidth = arrSpalten(i)
Next i
End Sub

Gruß
Rudi
Anzeige
Um HimmelWillen Rudi ;)
29.11.2010 13:37:19
Holger
Ich grüße Dich Rudi.
jedesmal, wenn ich deinen Code sehe, erschrecke ich erstmal.
Was also ist das nun wieder für eine Teufelei ;)
Was macht das sSpalten im FileOpen?
Wird da alles von oben nach unten eingelesen?
Oft habe ich bei deinen Codes oft gedacht, ich verstehe sie nie, aber
nach einiger Zeit verstehe ich so doch manchmal.
Herzlichen Dank
Anzeige
AW: Um HimmelWillen Rudi ;)
29.11.2010 13:47:48
Rudi
Hallo,
eigentlich einfach.
Input(LOF(1), 1) liest die ganze Datei ein.
sSpalten = Split(Input(LOF(1), 1), vbCrLf)
liest also die ganze .txt in ein Array ein. Jedes Element des Arrays beinhaltet eine Zeile der .txt.
arrSpalten = Split(sSpalten(4), vbTab)
zelegt das 5. Element von sSpalten (beginnt bei 0) in ein Array, vorausgesetzt, der Text ist mit Tab getrennt.
Gruß
Rudi
Anzeige
AW: Um HimmelWillen Rudi ;)
29.11.2010 13:51:38
Holger
Hallo Rudi,
warum muss das 5.Element zerlegt werden? Meine Datei sieht so aus
3.00
5.00
10.00
12.0
In jeder Zeile nur ein Wert.
Denn die Schleife funktionietr nur einmal, danach ist der Wert leer.
AW: Um HimmelWillen Rudi ;)
29.11.2010 14:02:20
Rudi
Hallo,
warum muss das 5.Element zerlegt werden? Meine Datei sieht so aus

Ich kann viel, aber nicht hellsehen.
Dann reicht das auch so:
Sub GehtindenLeerlauf()
Dim sSpalten, i As Integer
Open COLWIDTHtxt For Input As #1
sSpalten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For i = 0 To UBound(sSpalten)
ActiveSheet.Columns(i + 1).ColumnWidth = sSpalten(i)
Next i
End Sub

Gruß
Rudi
Anzeige
VIELEN DANK!!!!
29.11.2010 14:14:20
Holger
He Rudi,
klappt super und ist super einfach!
Einfach Wahnsinn.
Habe jetzt noch eine String Variable eingebaut, da nur die ersten vier Stellen
eingelesen werden dürfen (Hinten ist noch ein Kommentar mit der Überschrift der Spalte)
Nochmal Danke!
Gruß
Holger
;

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