Вопрос № 117067: Уважаемые эксперты! С новым годом!
1. Помогите разобраться в проблеме VBA. Задача сводится к копирова-нию листов в произвольном порядке из активной книги (Источник) в свернутый Приемник с упорядочиванием по порядку. Например, пере-менные m =Лист5...
Вопрос № 117.067
Уважаемые эксперты! С новым годом!
1. Помогите разобраться в проблеме VBA. Задача сводится к копирова-нию листов в произвольном порядке из активной книги (Источник) в свернутый Приемник с упорядочиванием по порядку. Например, пере-менные m =Лист5, n=Лист3,…p=Лист16. В приложении программка пос-ледовательного копирования по одиночке. Все нормально работает, но естественное желание применить групповое копирование
Sheets(Array(m, n, o, p)).Select
Sheets(Array(m, n, o, p)).Copy After:=Workbooks("Приемник.xls").Sheets(1)
наталкивается на откуда-то взявшуюся проблему конфликта имен: ссылка на якобы "уже содержащееся имя Control в формуле или на листе". Что-то я не догоняю. И еще:
2. Как проделать то же из закрытой Книги (Источник).
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Зыков Феликс Никанорович!
1. "Свернытый" или "активный" теряет актуальность, если создать объект и обращаться не к активному документу, а к объекту. "...с упорядочиванием по порядку..." - не совсем понятно, по какому порядку 5, 3,..16? Обращаться к листам можно как по имени -строчное значение(m ="Лист5"), так и по индексу - порядковый номер листа.
2. "проделать то же из закрытой Книги" нельзя, открывать придется, но и закрыть ее можно.:)
Удачи Вам в новом году.
Евгений.
Приложение:
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 05.01.2008, 20:21 Оценка за ответ: 5 Комментарий оценки: Ответ скорый, квалифицированный, со стремлением довести проблему до конца и с благожелательным отношением к чайнику.
Отвечает: Черников Игорь Владимирович
Здравствуйте, Зыков Феликс Никанорович!
Этого кода достаточно, чтобы всё у Вас заработало!
Workbooks.Open Filename:="C:Источник.xls"
Workbooks("Источник.xls").Sheets(Array(m, n, o, p)).Copy Before:=Workbooks("Приемник.xls").Sheets(1)
Workbooks("Источник.xls").Close SaveChanges:=False
Может не сработать, если в книге приёмник уже есть такие листы, а если на формулы или ссулки начнёт ругаться, по программно их на время мохно отключить
--------- От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 9-ый класс)
Ответ отправлен: 05.01.2008, 20:34 Оценка за ответ: 5 Комментарий оценки: Ответ полный. Простой язык. Особо ценная наводка: "программно их на время можно отключить". Несмотря на отсутствие опыта, я выпутался. Спасибо!