Ситуация следующая пишу макрос что бы один txt файл данных преобразовать в другой txt, но с немного другим форматом. Получается что сначала txt открывается в Excel, а потом после обработки сохраняется в txt. И всё бы ничего, но при сохранении у меня в каждой строке перед данными проставляется ";" Как сделать так что бы этих ";" не было в финальном txt файле?
Ситуация следующая пишу макрос что бы один txt файл данных преобразовать в другой txt, но с немного другим форматом. Получается что сначала txt открывается в Excel, а потом после обработки сохраняется в txt. И всё бы ничего, но при сохранении у меня в каждой строке перед данными проставляется ";" Как сделать так что бы этих ";" не было в финальном txt файле?Anton2201
krosav4ig, в том то и дело что самоучка... леплю из разных макросов один...
Видимо вот тут что-то не так и получается что каждая строчка в txt файле начинается с знака ";" Dim x, y(), j&, s$ x = ActiveSheet.UsedRange.Value If IsArray(x) Then ReDim y(1 To UBound(x)) For i = 1 To UBound(x) For j = 1 To UBound(x, 2) y(i) = y(i) & ";" & x(i, j) Next j Next i: s = Join(y, vbCrLf) Else s = x End If With CreateObject("scripting.filesystemobject") With .CreateTextFile(ThisWorkbook.Path & "\ThisWorkbook.Name.txt", True) .Write s: .Close End With
krosav4ig, в том то и дело что самоучка... леплю из разных макросов один...
Видимо вот тут что-то не так и получается что каждая строчка в txt файле начинается с знака ";" Dim x, y(), j&, s$ x = ActiveSheet.UsedRange.Value If IsArray(x) Then ReDim y(1 To UBound(x)) For i = 1 To UBound(x) For j = 1 To UBound(x, 2) y(i) = y(i) & ";" & x(i, j) Next j Next i: s = Join(y, vbCrLf) Else s = x End If With CreateObject("scripting.filesystemobject") With .CreateTextFile(ThisWorkbook.Path & "\ThisWorkbook.Name.txt", True) .Write s: .Close End WithAnton2201
[/vba] Либо еще вариант для записи в текстовый файл: [vba]
Код
Sub aaa() Dim x, i&, j&, s$ x = ActiveSheet.UsedRange.Value Open ThisWorkbook.Path & "\ThisWorkbook.Name.txt" For Output As #1 If IsArray(x) Then For i = 1 To UBound(x): s = vbNullString For j = 1 To UBound(x, 2) s = s & x(i, j) & ";" Next j Print #1, Left$(s, Len(s) - 1) Next i Else: Print #1, x End If Close #1 End Sub
[/vba]
Переставьте местами [vba]
Код
& x(i, j) & ";"
[/vba] Либо еще вариант для записи в текстовый файл: [vba]
Код
Sub aaa() Dim x, i&, j&, s$ x = ActiveSheet.UsedRange.Value Open ThisWorkbook.Path & "\ThisWorkbook.Name.txt" For Output As #1 If IsArray(x) Then For i = 1 To UBound(x): s = vbNullString For j = 1 To UBound(x, 2) s = s & x(i, j) & ";" Next j Print #1, Left$(s, Len(s) - 1) Next i Else: Print #1, x End If Close #1 End Sub