Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выборочное копирование диапазона в txt и извлечение - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выборочное копирование диапазона в txt и извлечение (Макросы/Sub)
Выборочное копирование диапазона в txt и извлечение
Lizard Дата: Понедельник, 08.04.2019, 03:44 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте.

Помогите мне решить вопрос с макросом.
Есть макрос - который сохраняет два диапазона - в txt как один диапазон - в виде табулированного текста.

Начало первого диапазона - записано в ячейке OL5
Конец первого диапазона - записано в ячейке OM5
Начало первого диапазона - записано в ячейке OL5
Конец первого диапазона - записано в ячейке OM5

Вопрос в том - как не заносить в текст ту часть диапазона - которая ограничивается строками, записанными вOL7 и OM7 - и как после этого скопировать содержимое из txt на лист5 - чтобы проверить, что табулированный текст - скопировался нормально ?

Начало выреза записано в ячейке OL7
Конец выреза записан в ячейке OM7 (в этих ячейках записаны строки - которые вообще не надо копировать в txt)
Эта часть которую не нужно копировать - находится как бы внутри диапазона.
К сообщению приложен файл: 4963508.xlsb(81.9 Kb) · 8181610.txt(0.2 Kb)
 
Ответить
СообщениеЗдравствуйте.

Помогите мне решить вопрос с макросом.
Есть макрос - который сохраняет два диапазона - в txt как один диапазон - в виде табулированного текста.

Начало первого диапазона - записано в ячейке OL5
Конец первого диапазона - записано в ячейке OM5
Начало первого диапазона - записано в ячейке OL5
Конец первого диапазона - записано в ячейке OM5

Вопрос в том - как не заносить в текст ту часть диапазона - которая ограничивается строками, записанными вOL7 и OM7 - и как после этого скопировать содержимое из txt на лист5 - чтобы проверить, что табулированный текст - скопировался нормально ?

Начало выреза записано в ячейке OL7
Конец выреза записан в ячейке OM7 (в этих ячейках записаны строки - которые вообще не надо копировать в txt)
Эта часть которую не нужно копировать - находится как бы внутри диапазона.

Автор - Lizard
Дата добавления - 08.04.2019 в 03:44
excelius Дата: Понедельник, 08.04.2019, 18:39 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
А чем не подходит решение разбить диапазон на два? Координаты же у Вас уже есть!
1. от начала исходного диапазона - до строки, предшествующей вырезу.
2. от строки, последующей вырезу до конца исходного диапазона.
Ну и не забыть проверить границы вхождений, конечно. Мало ли какие значения туда могут попасть по ошибке :)


Сообщение отредактировал excelius - Понедельник, 08.04.2019, 18:41
 
Ответить
СообщениеА чем не подходит решение разбить диапазон на два? Координаты же у Вас уже есть!
1. от начала исходного диапазона - до строки, предшествующей вырезу.
2. от строки, последующей вырезу до конца исходного диапазона.
Ну и не забыть проверить границы вхождений, конечно. Мало ли какие значения туда могут попасть по ошибке :)

Автор - excelius
Дата добавления - 08.04.2019 в 18:39
Lizard Дата: Понедельник, 08.04.2019, 19:45 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
excelius, так диапазон вставляемый сейчас в txt - и так уже состоит из двух частей.
Но если сложно сделать такую вырезку - то хотя бы скажите, как заменить эти "удаляемые" строки диапазона - нулями в табулированном txt (вместо удаления) ?

Просто в эти строки (с 10 по 19) - входит много информации, которую удалять нельзя и переносить в txt тоже нельзя.
Поэтому их надо как-то или вырезать или просто обнулить.
 
Ответить
Сообщениеexcelius, так диапазон вставляемый сейчас в txt - и так уже состоит из двух частей.
Но если сложно сделать такую вырезку - то хотя бы скажите, как заменить эти "удаляемые" строки диапазона - нулями в табулированном txt (вместо удаления) ?

Просто в эти строки (с 10 по 19) - входит много информации, которую удалять нельзя и переносить в txt тоже нельзя.
Поэтому их надо как-то или вырезать или просто обнулить.

Автор - Lizard
Дата добавления - 08.04.2019 в 19:45
excelius Дата: Вторник, 09.04.2019, 01:16 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
диапазон вставляемый сейчас в txt - и так уже состоит из двух частей

Ну вот. А я предлагаю сделать из трех (вернее даже из четырех) просто. Ведь все координаты уже есть на листе!

Вместо
[vba]
Код

    With Sheets("Лист3")
        Set iRng1 = .Range(.Range("OL5").Value & ":" & .Range("OM5").Value)
        Set iRng2 = .Range(.Range("ON5").Value & ":" & .Range("OO5").Value)
    End With
[/vba]

Сделать
[vba]
Код

    With Sheets("Лист3")
        Set iRng1BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OM5").value).Column)
        Set iRng2TopLeft = .Cells(.Range("OM7").value + 1, .Range(.Range("OL5").value).Column)
        Set iRng3BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OO5").value).Column)
        Set iRng4TopLeft = .Cells(.Range("OM7").value - 1, .Range(.Range("ON5").value).Column)

        Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight)
        Set iRng2 =  iRng2TopLeft & ":" & .Range("OM5").Value)
        Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight)
        Set iRng4 =  iRng4TopLeft & ":" & .Range("OO5").Value)
    End With
[/vba]

Просто придумайте, как задать эти ячейки-диапазоны. Или еще по одной ячейке на листе выделить под формулы, либо в макросе рассчитать значения.


Сообщение отредактировал excelius - Вторник, 09.04.2019, 12:13
 
Ответить
Сообщение
диапазон вставляемый сейчас в txt - и так уже состоит из двух частей

Ну вот. А я предлагаю сделать из трех (вернее даже из четырех) просто. Ведь все координаты уже есть на листе!

Вместо
[vba]
Код

    With Sheets("Лист3")
        Set iRng1 = .Range(.Range("OL5").Value & ":" & .Range("OM5").Value)
        Set iRng2 = .Range(.Range("ON5").Value & ":" & .Range("OO5").Value)
    End With
[/vba]

Сделать
[vba]
Код

    With Sheets("Лист3")
        Set iRng1BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OM5").value).Column)
        Set iRng2TopLeft = .Cells(.Range("OM7").value + 1, .Range(.Range("OL5").value).Column)
        Set iRng3BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OO5").value).Column)
        Set iRng4TopLeft = .Cells(.Range("OM7").value - 1, .Range(.Range("ON5").value).Column)

        Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight)
        Set iRng2 =  iRng2TopLeft & ":" & .Range("OM5").Value)
        Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight)
        Set iRng4 =  iRng4TopLeft & ":" & .Range("OO5").Value)
    End With
[/vba]

Просто придумайте, как задать эти ячейки-диапазоны. Или еще по одной ячейке на листе выделить под формулы, либо в макросе рассчитать значения.

Автор - excelius
Дата добавления - 09.04.2019 в 01:16
Lizard Дата: Среда, 10.04.2019, 14:52 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
excelius, добавил этот код в макрос.
Но он почему-то не работает.

[vba]
Код

Sub Macro2()

    Dim iRng1 As Range
    Dim iRng2 As Range
    With Sheets("Лист3")
        Set iRng1BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OM5").Value).Column)
        Set iRng2TopLeft = .Cells(.Range("OM7").Value + 1, .Range(.Range("OL5").Value).Column)
        Set iRng3BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OO5").Value).Column)
        Set iRng4TopLeft = .Cells(.Range("OM7").Value - 1, .Range(.Range("ON5").Value).Column)

        Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight)
        Set iRng2 = iRng2TopLeft & ":" & .Range("OM5").Value
        Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight)
        Set iRng4 = iRng4TopLeft & ":" & .Range("OO5").Value
    End With

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    iRng1.Copy
    Workbooks.Add
    With ActiveSheet
        .Paste
        iRng2.Copy
        .Cells(1, iRng1.Columns.Count + 1).Select  ' взамен .Range("A" & .Cells(2, 1).End(xlDown).Row + 2).Select
        .Paste
    End With
    ActiveWorkbook.SaveAs Filename:="F:\1\1.txt", FileFormat:= _
    xlText, CreateBackup:=False, Local:=True
    ActiveWorkbook.Close

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
[/vba]

Пишет ошибку Run-time error 1004

Как это исправить ?
К сообщению приложен файл: 8859384.xlsb(82.2 Kb)
 
Ответить
Сообщениеexcelius, добавил этот код в макрос.
Но он почему-то не работает.

[vba]
Код

Sub Macro2()

    Dim iRng1 As Range
    Dim iRng2 As Range
    With Sheets("Лист3")
        Set iRng1BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OM5").Value).Column)
        Set iRng2TopLeft = .Cells(.Range("OM7").Value + 1, .Range(.Range("OL5").Value).Column)
        Set iRng3BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OO5").Value).Column)
        Set iRng4TopLeft = .Cells(.Range("OM7").Value - 1, .Range(.Range("ON5").Value).Column)

        Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight)
        Set iRng2 = iRng2TopLeft & ":" & .Range("OM5").Value
        Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight)
        Set iRng4 = iRng4TopLeft & ":" & .Range("OO5").Value
    End With

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    iRng1.Copy
    Workbooks.Add
    With ActiveSheet
        .Paste
        iRng2.Copy
        .Cells(1, iRng1.Columns.Count + 1).Select  ' взамен .Range("A" & .Cells(2, 1).End(xlDown).Row + 2).Select
        .Paste
    End With
    ActiveWorkbook.SaveAs Filename:="F:\1\1.txt", FileFormat:= _
    xlText, CreateBackup:=False, Local:=True
    ActiveWorkbook.Close

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
[/vba]

Пишет ошибку Run-time error 1004

Как это исправить ?

Автор - Lizard
Дата добавления - 10.04.2019 в 14:52
Lizard Дата: Суббота, 13.04.2019, 16:43 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
excelius, что-то вот - не работает у меня.
Как вы считаете - в чем тут дело ?
 
Ответить
Сообщениеexcelius, что-то вот - не работает у меня.
Как вы считаете - в чем тут дело ?

Автор - Lizard
Дата добавления - 13.04.2019 в 16:43
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выборочное копирование диапазона в txt и извлечение (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!