Guten Tag,ich muß periodisch eine .txt-Datei in eine .xls-Datei umwandeln, in der Beträge angedruckt sind. Wenn ich die .txt-Datei Stück für Stück mit der Hand im Excel öffne und umformatiere, klappts wunderbar. Über ein Makro geht es schneller, aber die Währungsfelder werden mit führenden Nullen dargestellt und somit unübersichtlich (trotz der mit aufgezeichneten Umformatierung). Bearbeitet man die Tabelle nachträglich (in einem separaten Makro aufgezeichnet) klappt auch dies. Nun habe ich das 2. Makro an das erste drangehängt, geht aber immer noch nicht. Hat jemand eine Idee, wo es klemmt? Anbei mein Gesamtmakro:
ChDir „P:\Service-ET\EBS\INVENTUR“
Workbooks.OpenText Filename:= _
„P:\Service-ET\EBS\INVENTUR\sirondifferenzen.txt“, Origin:=932, StartRow:=1 _
, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, _
Space:=False, Other:=True, OtherChar:="""", FieldInfo:=Array(Array(1, 1) _
, Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1)), _
TrailingMinusNumbers:=True
Rows(„1:1“).Select
Selection.Delete Shift:=xlUp
Columns(„A:A“).Select
Selection.Delete Shift:=xlToLeft
Columns(„C:C“).Select
Selection.Delete Shift:=xlToLeft
Columns(„D:smiley:“).Select
Selection.Delete Shift:=xlToLeft
Columns(„J:J“).Select
Selection.Delete Shift:=xlToLeft
ActiveWindow.SmallScroll ToRight:=3
Columns(„K:K“).Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns(„L:L“).Select
Selection.Delete Shift:=xlToLeft
Range(„L1“).Select
ActiveCell.FormulaR1C1 = „=CONCATENATE(0,RC[1])“
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.AutoFill Destination:=Range(„L1:L3107“), Type:=xlFillDefault
Range(„L1:L3107“).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns(„M:M“).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
ActiveWindow.ScrollColumn = 1
Range(„B1“).Select
ActiveCell.FormulaR1C1 = „=CONCATENATE(RC[10],“" „“,RC[-1])"
Selection.AutoFill Destination:=Range(„B1:B3127“), Type:=xlFillDefault
Range(„B1:B3127“).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns(„A:A“).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns(„B:B“).Select
Selection.Delete Shift:=xlToLeft
Columns(„C:E“).Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns(„C:smiley:“).Select
Selection.NumberFormat = „#,##0.00 $“
Rows(„1:1“).Select
Selection.Insert Shift:=xlDown
Range(„A1“).Select
ActiveCell.FormulaR1C1 = „Teilnr.“
Range(„B1“).Select
ActiveCell.FormulaR1C1 = „Diff.“
Range(„C1“).Select
ActiveCell.FormulaR1C1 = „DiffWert“
Range(„D1“).Select
ActiveCell.FormulaR1C1 = „BLP“
Range(„E1“).Select
ActiveCell.FormulaR1C1 = „Best.“
Range(„F1“).Select
ActiveCell.FormulaR1C1 = „IVZae“
Range(„G1“).Select
ActiveCell.FormulaR1C1 = „IVDat“
Range(„H1“).Select
ActiveCell.FormulaR1C1 = „LO1“
Range(„I1“).Select
ActiveCell.FormulaR1C1 = „LO2“
Range(„J1“).Select
ActiveCell.FormulaR1C1 = „Lok“
Rows(„1:1“).Select
Selection.Font.Bold = True
With Selection.Font
.Name = „Arial“
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns(„G:G“).Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns(„H:I“).Select
Selection.NumberFormat = „0000 0000“
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns(„C:C“).Select
Selection.TextToColumns Destination:=Range(„C1“), DataType:=xlFixedWidth, _
OtherChar:="""", FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
Selection.NumberFormat = „0.00“
Columns(„D:smiley:“).Select
Selection.TextToColumns Destination:=Range(„D1“), DataType:=xlFixedWidth, _
OtherChar:="""", FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
Selection.NumberFormat = „0.00“
Columns(„E:E“).Select
Selection.TextToColumns Destination:=Range(„E1“), DataType:=xlFixedWidth, _
OtherChar:="""", FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
End Sub
Hallo festus.
Interessant findei ch folgenden Abschnitt in deinem Makro
Selection.Replace What:=".", Replacement:=",",
LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False,
SearchFormat:=False, _
ReplaceFormat:=False
Columns(„C:smiley:“).Select
Selection.NumberFormat = „#,##0.00 $“
So wie ich das verstehe, ersetzt du den Punkt durch ein Komma. Machst du das bei der Währung um das englische Zahlensystem zu erzeugen? Anschließend weißt du das Zahlenformat zu. Ich könnte mir folgendes vorstellen:
- Ausgangsbetrag: 100000,50 (deutsche Schreibweise)
- geändert: 100000.50 (englische Schreibweise)
- Selection.NumberFormat = „#,##0.00 $“ --> vllt findet das makro keine entsprechende Zahl, weil du vorher schon auf die englische Schreibweise geändert hast.
Ist allerdigns ins Blaue geraten - ich bin auch schon oft durcheinander gekommen, weil die Anzeige in Excel der deutschen Schreibweise entspricht, das Makro selbst, jedoch die englische benutzt. Für das Makro hast du evtl. folgende Zahl eingegeben: 100000.50,00 (deutsche Schreibweise) - und das sind dann ja doch ein paar Zahlen mehr.
Grüße, Aiko.
Das ganze Makro habe ich über „aufzeichnen“ erstellt.
Bei der .txt-Datei (Grundlage) haben die Währungszahlen einen „.“ Punkt. Den ersetze ich durch Komma, dann sieht es auch bei manueller Abwicklung in der .xls gut aus.
Wie gesagt, bei manueller Eingabe. Leider aber nicht, wenn das Makro abspult. Will mir nicht in den Kopf, was beim Ablaufen des Makros andrs sein soll als bei der Aufzeichnung.
Ob es Zweck hat, mit einer Formatvorlage zu arbeiten? Widerspricht aber auch meinem Verständnis, daß es manuell geht, „makroell“ aber nicht.
mfg festus
Hallo festus.
Alles klar - dann hilft mein Ansatz natürlich nichts. Beim zweiten Lesen ist mir aufgefallen, dass du mit EXCEL die .txt-Datei öffnest. Vielleicht ergeben sich dadurch Probleme. Hast du vielleicht mal probiert, die Daten zu importieren? Ich kenne das von .csv-Dateien. Da klappt es auch per Makro erst, wenn man die Daten importiert und nicht die .csv-Datei mittels EXCEL öffnet und dann umwandelt.
Grüße, Aiko.