Здравствуйте уважаемые программисты и пользователи. Прошу помощи. В прикрепленном файле таблица. Суть идеи такова: пользователь выделяет в базовой таблице несмежные строки(диапазоны строк). Открывается шаблон документа и из каждой строки в цикле ячейки по очереди копируются в открытый шаблон в конкретные адреса ячеек, затем шаблон сохраняется через SaveCopyAs. И так для каждой выделенной строки. Т.е. одна строка - один заполненный шаблон. Счет выделенных строк организовать смог, спасибо этому форуму и книгам. А вот обращение к ячейке строки в цикле и копирование не могу. Не понимаю я структуру Excel VBA, да и синтаксис тоже не совсем. Оформлять Акты и калькуляции к проделанной работе методом копи-паст каждый день по вечерам после основной работы очень напрягает. Ткните носом в пример пожалуйста или подкорректируйте мой макрос. P.S. Проект только начал. В VBA ни в зуб ногой ни........ Постараюсь развивать проект дальше, добавлю форм, проверок нумерации, разделю на процедуры для удобства и т.д.
Здравствуйте уважаемые программисты и пользователи. Прошу помощи. В прикрепленном файле таблица. Суть идеи такова: пользователь выделяет в базовой таблице несмежные строки(диапазоны строк). Открывается шаблон документа и из каждой строки в цикле ячейки по очереди копируются в открытый шаблон в конкретные адреса ячеек, затем шаблон сохраняется через SaveCopyAs. И так для каждой выделенной строки. Т.е. одна строка - один заполненный шаблон. Счет выделенных строк организовать смог, спасибо этому форуму и книгам. А вот обращение к ячейке строки в цикле и копирование не могу. Не понимаю я структуру Excel VBA, да и синтаксис тоже не совсем. Оформлять Акты и калькуляции к проделанной работе методом копи-паст каждый день по вечерам после основной работы очень напрягает. Ткните носом в пример пожалуйста или подкорректируйте мой макрос. P.S. Проект только начал. В VBA ни в зуб ногой ни........ Постараюсь развивать проект дальше, добавлю форм, проверок нумерации, разделю на процедуры для удобства и т.д.Eugene_MTE
Каждый шаблон в отдельном файле? Если да, то тогда шаблоны тоже нужно в цикле открывать, а у Вас открывается один файл, перед копированием строк и все...
UPD Все таки поправила код, чтобы понятнее было (в примере копирую выделенные строки на лист 2). Файл перезалила.
[vba]
Код
Sub tedst() Dim rng As Range Set rng = Application.InputBox("Выделите нужные строки", Type:=8) Sheets(2).Cells.ClearContents For j = 1 To rng.Areas.Count ' счет несмежных диапазонов For i = 1 To rng.Areas(j).Rows.Count ' счет строк в каждом диапазоне 'Application.ScreenUpdating = False 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-Ю ЯЧЕЙКУ СТРОКИ 'Application.ScreenUpdating = True Next Next End Sub
Каждый шаблон в отдельном файле? Если да, то тогда шаблоны тоже нужно в цикле открывать, а у Вас открывается один файл, перед копированием строк и все...
UPD Все таки поправила код, чтобы понятнее было (в примере копирую выделенные строки на лист 2). Файл перезалила.
[vba]
Код
Sub tedst() Dim rng As Range Set rng = Application.InputBox("Выделите нужные строки", Type:=8) Sheets(2).Cells.ClearContents For j = 1 To rng.Areas.Count ' счет несмежных диапазонов For i = 1 To rng.Areas(j).Rows.Count ' счет строк в каждом диапазоне 'Application.ScreenUpdating = False 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-Ю ЯЧЕЙКУ СТРОКИ 'Application.ScreenUpdating = True Next Next End Sub
Manyasha, Спасибо, работает, но мне нужно скопировать данные из основной таблицы на лист шаблона, т.е. в другую книгу. Я использовал ваш пример и переделал, но по моему варианту не работает. В качестве имени открытого шаблона использовал переменную, которой присвоил имя при открытии шаблона. [vba]
[/vba] По поводу открытия шаблона в цикле! Шаблон один и не меняется. А так нельзя сделать?: открыть файл шаблона - в цикле: копировать данные - сохранить шаблон SaveCopyAs как xlsx - очистить нужные ячейки шаблона - заново по циклу. Тогда открывать шаблон каждый раз не нужно. [moder]Код нужно оформлять тегами! Кнопка #. Поправила за Вас![/moder]
Manyasha, Спасибо, работает, но мне нужно скопировать данные из основной таблицы на лист шаблона, т.е. в другую книгу. Я использовал ваш пример и переделал, но по моему варианту не работает. В качестве имени открытого шаблона использовал переменную, которой присвоил имя при открытии шаблона. [vba]
[/vba] По поводу открытия шаблона в цикле! Шаблон один и не меняется. А так нельзя сделать?: открыть файл шаблона - в цикле: копировать данные - сохранить шаблон SaveCopyAs как xlsx - очистить нужные ячейки шаблона - заново по циклу. Тогда открывать шаблон каждый раз не нужно. [moder]Код нужно оформлять тегами! Кнопка #. Поправила за Вас![/moder]Eugene_MTE
Инженер-электроник Сервис станков с ЧПУ
Сообщение отредактировал Manyasha - Вторник, 16.06.2015, 13:37