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

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

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
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
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.
Anzeige
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
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige