Имеется текстовый файл, заполненный текстово-числовыми значениями. На девятой строке этого текста, на расстоянии двенадцати символов от начала строки - стоит число "52".
Как макросом - заставить смениться именно это число (не затрагивая прочий текст), на то число, которое вписано в ячейку D3 - на листе экселя ?
Всем добрый вечер. Помогите, плз разобраться.
Имеется текстовый файл, заполненный текстово-числовыми значениями. На девятой строке этого текста, на расстоянии двенадцати символов от начала строки - стоит число "52".
Как макросом - заставить смениться именно это число (не затрагивая прочий текст), на то число, которое вписано в ячейку D3 - на листе экселя ?perven
perven, Не скажу на 100%, но вроде как запись в какую-либо позицию текстового файла новых данных затирает старые данные, начиная с этой позиции. Если вам известны номер строки, номер позиции и то что нужно заменить, можно просто перезаписать этот txt Например так. В [D1] = номер строки, в [D2] номер вхождения текста который нужно заменить, [D3] - сам текст который нужно менять. Путь к файлу на свой замените. [vba]
Код
Sub test() Dim str As String FreeRow = 1 aFile = "C:\Users\Katalog\Documents\1234.txt" Open aFile For Input As #1 Do Line Input #1, str Cells(FreeRow, 1) = str FreeRow = FreeRow + 1 Loop Until EOF(1) Close #1 str2 = Cells([D1], 1) Set rn = Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row) Cells([D1], 1) = Left(str2, [D2]) & [D4] & Right(str2, Len(str2) - [D2] - Len([D3])) Open aFile For Output As #1 For Each c In rn.Cells: Print #1, c: Next Close #1 rn.ClearContents End Sub
[/vba]
perven, Не скажу на 100%, но вроде как запись в какую-либо позицию текстового файла новых данных затирает старые данные, начиная с этой позиции. Если вам известны номер строки, номер позиции и то что нужно заменить, можно просто перезаписать этот txt Например так. В [D1] = номер строки, в [D2] номер вхождения текста который нужно заменить, [D3] - сам текст который нужно менять. Путь к файлу на свой замените. [vba]
Код
Sub test() Dim str As String FreeRow = 1 aFile = "C:\Users\Katalog\Documents\1234.txt" Open aFile For Input As #1 Do Line Input #1, str Cells(FreeRow, 1) = str FreeRow = FreeRow + 1 Loop Until EOF(1) Close #1 str2 = Cells([D1], 1) Set rn = Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row) Cells([D1], 1) = Left(str2, [D2]) & [D4] & Right(str2, Len(str2) - [D2] - Len([D3])) Open aFile For Output As #1 For Each c In rn.Cells: Print #1, c: Next Close #1 rn.ClearContents End Sub