Hallo Franje,
ich habe mal versucht das genze etwas „Blind“ zu schreiben. Du hast bisher garnichts mit vba gemacht?
Du hast jetzt beide Codes von mir an deinen angehangen, vba arbeitet den Code aber von oben nach unten ab, außer Du hast Sprungmarken gesetzt.
Probier den Code unten mal aus. Er bezieht den Dateinamen aus der Zelle B1. Der Bezug B2 kommt aus der cells(1,2) Anweisung und kann nach Bedarf geändert werden (Die 1 steht für Zeile 1, die 2 für Spalte 2, demnach wäre c5 dann cells(5,3)).
Ist die einzulesende Datei immer gleich groß? Die Zeile „Range(„A1:G226“).Select“ selektiert den beschriebenen Zellbereich. Ich habe den Bereich mal mit usedrange.select geändert. Jetzt sollte der gesamte genutzte Zellbereich angesprochen werden.
Das Problem mit dem Zellen formatieren kannst Du ohne If-Anweisung lösen. Das wäre auch sehr auswändig da Du jede Zelle durchlaufen müsstest. Das Problem scheint mir eher zu sein dass nach den Null ein Punkt und kein Komma steht, daher kann Excel das nicht als Zahl verstehen. Mit der „Cells.Replace what…“ Zeile sollten alle Punkte durch Kommas in der Tabelle ersetzt werden. Danach deine Zellen formatieren Anweisung und es sollte 0,00 in der Zelle stehen.
Der Code steht unten.
Schönen Gruß
Thomas
Sub MakroEndversion()
’
’ MakroEndversion Makro
’ Makro am 29.03.2010 von … aufgezeichnet
’
’
x = Cells(1, 2)
Z = „\win9\daten\jvz“ & x
Workbooks.OpenText Z, _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), Array(8, 1), Array(20, 1), Array(32, 1), Array(44, 1), Array(56, 1), Array(68, _
1)), TrailingMinusNumbers:=True
Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
UsedRange.Select
Selection.NumberFormat = „0.00“
Range(„I21“).Select
End Sub