Доброго времени суток. Помогите разобраться с макросом.
Имеется файл "Текстовый файл.txt", где строго построчно записаны текстовые данные.
Как макросом - заполнить столбец H - построчными данными из txt, начиная с того места, где кончаются единицы в столбце F ? В данном случае заполнение начнется со строки H33.
Доброго времени суток. Помогите разобраться с макросом.
Имеется файл "Текстовый файл.txt", где строго построчно записаны текстовые данные.
Как макросом - заполнить столбец H - построчными данными из txt, начиная с того места, где кончаются единицы в столбце F ? В данном случае заполнение начнется со строки H33.Glass4217
K-SerJC, ну вот я по ссылке нашел вот такой код: [vba]
Код
Sub xx() With Application .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False Open ActiveWorkbook.Path & "\8037208.txt" For Input As #1 With GetObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Input$(LOF(1), 1) .PutInClipboard End With Close #1 With [C5:F5] Range(.Cells, .End(xlDown)).ClearContents .Cells(1).PasteSpecial xlPasteAll .Copy End With .CutCopyMode = 0 .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1 End With End Sub
[/vba]
Так там - не то.
Там - табулированный текст и вставляется он сразу в несколько столбцов. А у меня - нужно только в один столбец.
Потом еще этот код - не учитывает наличие единиц в столбце F.
K-SerJC, ну вот я по ссылке нашел вот такой код: [vba]
Код
Sub xx() With Application .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False Open ActiveWorkbook.Path & "\8037208.txt" For Input As #1 With GetObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Input$(LOF(1), 1) .PutInClipboard End With Close #1 With [C5:F5] Range(.Cells, .End(xlDown)).ClearContents .Cells(1).PasteSpecial xlPasteAll .Copy End With .CutCopyMode = 0 .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1 End With End Sub
[/vba]
Так там - не то.
Там - табулированный текст и вставляется он сразу в несколько столбцов. А у меня - нужно только в один столбец.
Потом еще этот код - не учитывает наличие единиц в столбце F.Glass4217
K-SerJC, спасибо за ответ. Теперь макрос выглядит так: [vba]
Код
Sub xx() With Application .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False Open ActiveWorkbook.Path & "\Текстовый файл.txt" For Input As #1 With GetObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Input$(LOF(1), 1) .PutInClipboard End With Close #1 With [H7] Range(.Cells, .End(xlDown)).ClearContents .Cells(1).PasteSpecial xlPasteAll .Copy End With .CutCopyMode = 0 .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1 End With End Sub
[/vba]
Но этот файл - перед вставкой - удаляет предыдущее содержимое столбца H, хотя этого делать не нужно. Я спрашивал - как осуществить вставку текста - в столбец H, начиная с последней соответствующей ячейки (где нет 1 столбца F). То есть это должна сейчас быть - ячейка H33.
Каково ваше мнение - как реализовать эту операцию ?
K-SerJC, спасибо за ответ. Теперь макрос выглядит так: [vba]
Код
Sub xx() With Application .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = False Open ActiveWorkbook.Path & "\Текстовый файл.txt" For Input As #1 With GetObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Input$(LOF(1), 1) .PutInClipboard End With Close #1 With [H7] Range(.Cells, .End(xlDown)).ClearContents .Cells(1).PasteSpecial xlPasteAll .Copy End With .CutCopyMode = 0 .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1 End With End Sub
[/vba]
Но этот файл - перед вставкой - удаляет предыдущее содержимое столбца H, хотя этого делать не нужно. Я спрашивал - как осуществить вставку текста - в столбец H, начиная с последней соответствующей ячейки (где нет 1 столбца F). То есть это должна сейчас быть - ячейка H33.
Каково ваше мнение - как реализовать эту операцию ?Glass4217
Sub мяу() Open ActiveWorkbook.Path & "\8037208.txt" For Input As #1 spl = Split(Input$(LOF(1), 1), vbNewLine) Cells(Rows.Count, "F").End(xlUp).Offset(1, 2).Resize(UBound(spl)) = spl Close #1 End Sub
[/vba]
[vba]
Код
Sub мяу() Open ActiveWorkbook.Path & "\8037208.txt" For Input As #1 spl = Split(Input$(LOF(1), 1), vbNewLine) Cells(Rows.Count, "F").End(xlUp).Offset(1, 2).Resize(UBound(spl)) = spl Close #1 End Sub