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

Вход

Регистрация

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

 

= Мир MS Excel/Копировать ячейку из выделенной строки в цикле - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать ячейку из выделенной строки в цикле (Макросы/Sub)
Копировать ячейку из выделенной строки в цикле
Eugene_MTE Дата: Вторник, 16.06.2015, 12:14 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте уважаемые программисты и пользователи. Прошу помощи. В прикрепленном файле таблица. Суть идеи такова: пользователь выделяет в базовой таблице несмежные строки(диапазоны строк). Открывается шаблон документа и из каждой строки в цикле ячейки по очереди копируются в открытый шаблон в конкретные адреса ячеек, затем шаблон сохраняется через SaveCopyAs. И так для каждой выделенной строки. Т.е. одна строка - один заполненный шаблон. Счет выделенных строк организовать смог, спасибо этому форуму и книгам. А вот обращение к ячейке строки в цикле и копирование не могу. Не понимаю я структуру Excel VBA, да и синтаксис тоже не совсем. Оформлять Акты и калькуляции к проделанной работе методом копи-паст каждый день по вечерам после основной работы очень напрягает. Ткните носом в пример пожалуйста или подкорректируйте мой макрос.
P.S. Проект только начал. В VBA ни в зуб ногой ни........ Постараюсь развивать проект дальше, добавлю форм, проверок нумерации, разделю на процедуры для удобства и т.д.
К сообщению приложен файл: __VBA.xlsm (21.3 Kb)


Инженер-электроник
Сервис станков с ЧПУ
 
Ответить
СообщениеЗдравствуйте уважаемые программисты и пользователи. Прошу помощи. В прикрепленном файле таблица. Суть идеи такова: пользователь выделяет в базовой таблице несмежные строки(диапазоны строк). Открывается шаблон документа и из каждой строки в цикле ячейки по очереди копируются в открытый шаблон в конкретные адреса ячеек, затем шаблон сохраняется через SaveCopyAs. И так для каждой выделенной строки. Т.е. одна строка - один заполненный шаблон. Счет выделенных строк организовать смог, спасибо этому форуму и книгам. А вот обращение к ячейке строки в цикле и копирование не могу. Не понимаю я структуру Excel VBA, да и синтаксис тоже не совсем. Оформлять Акты и калькуляции к проделанной работе методом копи-паст каждый день по вечерам после основной работы очень напрягает. Ткните носом в пример пожалуйста или подкорректируйте мой макрос.
P.S. Проект только начал. В VBA ни в зуб ногой ни........ Постараюсь развивать проект дальше, добавлю форм, проверок нумерации, разделю на процедуры для удобства и т.д.

Автор - Eugene_MTE
Дата добавления - 16.06.2015 в 12:14
Manyasha Дата: Вторник, 16.06.2015, 12:46 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Eugene_MTE, Здравствуйте. Можно так:[vba]
Код
rng.Areas(j).Rows(i).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1) 'КОПИРУЕМ СТРОКУ
rng.Areas(j).Cells(i, 2).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(0, 10) 'КОПИРУЕМ 2-Ю ЯЧЕЙКУ СТРОКИ
[/vba]
Ваш макрос не трогала, только эти 2 строчки добавила.
И еще, не поняла про
одна строка - один заполненный шаблон
Каждый шаблон в отдельном файле? Если да, то тогда шаблоны тоже нужно в цикле открывать, а у Вас открывается один файл, перед копированием строк и все...

UPD
Все таки поправила код, чтобы понятнее было (в примере копирую выделенные строки на лист 2). Файл перезалила.

И еще раз перезалила, был косяк)
К сообщению приложен файл: _VBA1.xlsm (17.2 Kb)


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Вторник, 16.06.2015, 13:12
 
Ответить
СообщениеEugene_MTE, Здравствуйте. Можно так:[vba]
Код
rng.Areas(j).Rows(i).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1) 'КОПИРУЕМ СТРОКУ
rng.Areas(j).Cells(i, 2).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(0, 10) 'КОПИРУЕМ 2-Ю ЯЧЕЙКУ СТРОКИ
[/vba]
Ваш макрос не трогала, только эти 2 строчки добавила.
И еще, не поняла про
одна строка - один заполненный шаблон
Каждый шаблон в отдельном файле? Если да, то тогда шаблоны тоже нужно в цикле открывать, а у Вас открывается один файл, перед копированием строк и все...

UPD
Все таки поправила код, чтобы понятнее было (в примере копирую выделенные строки на лист 2). Файл перезалила.

И еще раз перезалила, был косяк)

Автор - Manyasha
Дата добавления - 16.06.2015 в 12:46
Eugene_MTE Дата: Вторник, 16.06.2015, 13:12 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Manyasha, Спасибо, работает, но мне нужно скопировать данные из основной таблицы на лист шаблона, т.е. в другую книгу. Я использовал ваш пример и переделал, но по моему варианту не работает. В качестве имени открытого шаблона использовал переменную, которой присвоил имя при открытии шаблона.
[vba]
Код
rng.Areas(j).Rows(i).Cells(i, 2).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(0, 10) 'КОПИРУЕМ 2-Ю ЯЧЕЙКУ СТРОКИ
rng.Areas(j).Rows(i).Cells(i, 2).Copy Workbooks([color=red]FileOpenName[/color]).Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Offset(0, 10)
[/vba]
По поводу открытия шаблона в цикле! Шаблон один и не меняется.
А так нельзя сделать?: открыть файл шаблона - в цикле: копировать данные - сохранить шаблон SaveCopyAs как xlsx - очистить нужные ячейки шаблона - заново по циклу.
Тогда открывать шаблон каждый раз не нужно.
[moder]Код нужно оформлять тегами! Кнопка #.
Поправила за Вас![/moder]


Инженер-электроник
Сервис станков с ЧПУ


Сообщение отредактировал Manyasha - Вторник, 16.06.2015, 13:37
 
Ответить
СообщениеManyasha, Спасибо, работает, но мне нужно скопировать данные из основной таблицы на лист шаблона, т.е. в другую книгу. Я использовал ваш пример и переделал, но по моему варианту не работает. В качестве имени открытого шаблона использовал переменную, которой присвоил имя при открытии шаблона.
[vba]
Код
rng.Areas(j).Rows(i).Cells(i, 2).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(0, 10) 'КОПИРУЕМ 2-Ю ЯЧЕЙКУ СТРОКИ
rng.Areas(j).Rows(i).Cells(i, 2).Copy Workbooks([color=red]FileOpenName[/color]).Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Offset(0, 10)
[/vba]
По поводу открытия шаблона в цикле! Шаблон один и не меняется.
А так нельзя сделать?: открыть файл шаблона - в цикле: копировать данные - сохранить шаблон SaveCopyAs как xlsx - очистить нужные ячейки шаблона - заново по циклу.
Тогда открывать шаблон каждый раз не нужно.
[moder]Код нужно оформлять тегами! Кнопка #.
Поправила за Вас![/moder]

Автор - Eugene_MTE
Дата добавления - 16.06.2015 в 13:12
Manyasha Дата: Вторник, 16.06.2015, 13:48 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Eugene_MTE, проверяйте. Имя сохранения задается автоматически (в коде можно поправить)
К сообщению приложен файл: _VBA2.xlsm (19.2 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеEugene_MTE, проверяйте. Имя сохранения задается автоматически (в коде можно поправить)

Автор - Manyasha
Дата добавления - 16.06.2015 в 13:48
Eugene_MTE Дата: Вторник, 16.06.2015, 14:18 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Manyasha, Все работает. Продолжу эксперименты.
Уверен, это первая, но не последняя просьба о помощи. :)

Огромное спасибо!


Инженер-электроник
Сервис станков с ЧПУ
 
Ответить
СообщениеManyasha, Все работает. Продолжу эксперименты.
Уверен, это первая, но не последняя просьба о помощи. :)

Огромное спасибо!

Автор - Eugene_MTE
Дата добавления - 16.06.2015 в 14:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать ячейку из выделенной строки в цикле (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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