Добрый день. Проблема такая. Из книги, каждый лист которой содержит несколько кнопок и макросы их обслуживающие, необходимо программным образом копировать некоторые из листов в новую книгу. Однако после копировния, макросы ссылаются не на новую книку, а на ту, из которой их скопировали (хотя внутри содержится свой такой же. Вопрос: Как этого избежать? как (программно) разорвать связи. Такая же проблема есть если копировать листы содержащие формулы, ссылающиеся на диапазоны соседних листов. например формула из книги A.xls =ВПР(Лист1!А1;В1:В15;1;1=2) в новой книге, после копирования листа превратится в ВПР([c:\a.xls]Лист1!А1;В1:В15;1;1=2). Я ее обхожу так: пишу формулу =ВПР( ДВССЫЛ("Лист1!А1");В1:В15;1;1=2) которая переносится без изменений. Но с макросами привязанными к кнопкам так не получается.
Добрый день. Проблема такая. Из книги, каждый лист которой содержит несколько кнопок и макросы их обслуживающие, необходимо программным образом копировать некоторые из листов в новую книгу. Однако после копировния, макросы ссылаются не на новую книку, а на ту, из которой их скопировали (хотя внутри содержится свой такой же. Вопрос: Как этого избежать? как (программно) разорвать связи. Такая же проблема есть если копировать листы содержащие формулы, ссылающиеся на диапазоны соседних листов. например формула из книги A.xls =ВПР(Лист1!А1;В1:В15;1;1=2) в новой книге, после копирования листа превратится в ВПР([c:\a.xls]Лист1!А1;В1:В15;1;1=2). Я ее обхожу так: пишу формулу =ВПР( ДВССЫЛ("Лист1!А1");В1:В15;1;1=2) которая переносится без изменений. Но с макросами привязанными к кнопкам так не получается.Гость
C формулами просто: в исходнике жмёте Ctrl+H, найти =, заменить на ё, копируете формулы в новую книгу и в ней производите обратную замену ё на =
C формулами просто: в исходнике жмёте Ctrl+H, найти =, заменить на ё, копируете формулы в новую книгу и в ней производите обратную замену ё на =Serge_007
C формулами просто: в исходнике жмёте Ctrl+H, найти =, заменить на ё, копируете формулы в новую книгу и в ней производите обратную замену ё на =
я не до конца объяснил. Копирую листы в новую книгу не я, а другая прграмма, делающая на один из листов выгрузку из базы данных, а остальные листы дополняются из моего файла. В результате получается книга с выгрузкой из базы и листы с отчетами обрабатывающими выгруженные данные. Поэтому предложенный способ увы не работающий (для меня).
Quote (Serge_007)
C формулами просто: в исходнике жмёте Ctrl+H, найти =, заменить на ё, копируете формулы в новую книгу и в ней производите обратную замену ё на =
я не до конца объяснил. Копирую листы в новую книгу не я, а другая прграмма, делающая на один из листов выгрузку из базы данных, а остальные листы дополняются из моего файла. В результате получается книга с выгрузкой из базы и листы с отчетами обрабатывающими выгруженные данные. Поэтому предложенный способ увы не работающий (для меня).Гость
Из книги, каждый лист которой содержит несколько кнопок и макросы их обслуживающие, необходимо программным образом копировать некоторые из листов в новую книгу.
Если именно в НОВУЮ книгу, то проще всего сделать копию ВСЕЙ исходной книги, а потом поудалять то, что не нужно. Так и ссылки сохранятся, и макросы.
Quote (Гость)
Из книги, каждый лист которой содержит несколько кнопок и макросы их обслуживающие, необходимо программным образом копировать некоторые из листов в новую книгу.
Если именно в НОВУЮ книгу, то проще всего сделать копию ВСЕЙ исходной книги, а потом поудалять то, что не нужно. Так и ссылки сохранятся, и макросы._Boroda_
Если именно в НОВУЮ книгу, то проще всего сделать копию ВСЕЙ исходной книги, а потом поудалять то, что не нужно. Так и ссылки сохранятся, и макросы.
Повторюсь еще раз. Сервис по копированию осуществляется сторонней программой. Она - программа - сама эти действия по копированию осуществляет. Я предоставляю только файл из которого она берет листы в качестве дополнения к созданной ей самой выгрузке. Новую книгу создает она НЕ для меня, а для юзера, который запросил выгрузку из базы. И он (юзер) конечно не будет ничего удалять. В общем обстоятельства такие. Я не могу ничего диктовать разработчикам программы обслуживающей базу, могу только приспосабливаться. Необходимо добиться, чтобы мой лист, перенесенный в другую книгу работал автономно. Те необходимо разорвать связь с книгой источником
Quote (_Boroda_)
Если именно в НОВУЮ книгу, то проще всего сделать копию ВСЕЙ исходной книги, а потом поудалять то, что не нужно. Так и ссылки сохранятся, и макросы.
Повторюсь еще раз. Сервис по копированию осуществляется сторонней программой. Она - программа - сама эти действия по копированию осуществляет. Я предоставляю только файл из которого она берет листы в качестве дополнения к созданной ей самой выгрузке. Новую книгу создает она НЕ для меня, а для юзера, который запросил выгрузку из базы. И он (юзер) конечно не будет ничего удалять. В общем обстоятельства такие. Я не могу ничего диктовать разработчикам программы обслуживающей базу, могу только приспосабливаться. Необходимо добиться, чтобы мой лист, перенесенный в другую книгу работал автономно. Те необходимо разорвать связь с книгой источникомГость
Прежде, чем повторяться - посмотрите на время наших постов. 9:29 и 9:30. Мы параллельно писали. У меня тоже на работе есть такие программы (именно во множественном числе). И приспособился я очень просто - я не свои листы копирую в лист выгрузки, а наоборот, данные из листа выгрузки копирую в свои, уже заранее настроенные, файлы в заранее созданный лист. Причем, все формулы и макросы уже настроены и остается только вставить новые данные и посмотреть на полученный результат. И, кстати, все наши, даже самые "деревянные" пользователи прекрасно освоили эту простую последовательность - выделил, скопировал, вставил. Согласитесь, намного проще, чем копировать листы и бороться со связями.
Quote (Гость)
Повторюсь еще раз.
Прежде, чем повторяться - посмотрите на время наших постов. 9:29 и 9:30. Мы параллельно писали. У меня тоже на работе есть такие программы (именно во множественном числе). И приспособился я очень просто - я не свои листы копирую в лист выгрузки, а наоборот, данные из листа выгрузки копирую в свои, уже заранее настроенные, файлы в заранее созданный лист. Причем, все формулы и макросы уже настроены и остается только вставить новые данные и посмотреть на полученный результат. И, кстати, все наши, даже самые "деревянные" пользователи прекрасно освоили эту простую последовательность - выделил, скопировал, вставил. Согласитесь, намного проще, чем копировать листы и бороться со связями._Boroda_
переделай все контролы в ActiveX, а макросы, соответственно, в "Исходный текст" этого листа и лист инкапсулирует все свои элементы управления со всеми потрохами...
переделай все контролы в ActiveX, а макросы, соответственно, в "Исходный текст" этого листа и лист инкапсулирует все свои элементы управления со всеми потрохами...Саня
переделай все контролы в ActiveX, а макросы, соответственно, в "Исходный текст" этого листа и лист инкапсулирует все свои элементы управления со всеми потрохами...
Интересный вариант. Попробую.
Quote (Саня)
переделай все контролы в ActiveX, а макросы, соответственно, в "Исходный текст" этого листа и лист инкапсулирует все свои элементы управления со всеми потрохами...