Как проверить, принадлежит ли запущенный код активному листу

Я написал код для таблицы Excel. Этот элемент был добавлен на ленту с использованием стандартных настроек, которые можно найти в меню «Файл» -> «Параметры» -> «Настроить ленту». Что забавно, так это то, что настройка запустит Sub на ТОЧНОМ ФАЙЛЕ EXCEL, в котором написан Sub, то есть на оригинале.

Мои пользователи копируют файл Excel и вносят коррективы, а затем запускают подпрограмму (нажав настраиваемую кнопку на ленте), которая затем открывает ИСХОДНЫЙ файл шаблона и запускает код. На самом деле это работает отлично, и мне это нравится, потому что он запускает код ШАБЛОНА на АКТИВНОМ листе. Но единственная проблема в том, что он также ОТКРЫВАЕТ исходный файл шаблона. Как заставить его закрыться? Помните, что это больше не ActiveSheet.

Один из возможных ответов — проверить, открыт ли шаблон, а затем закрыть его (используя статическую ссылку), но я бы предпочел что-то более элегантное.


person Quintin Balsdon    schedule 06.01.2013    source источник
comment
Я полагаю, что когда элегантность программирования VBA остается за дверью...   -  person Quintin Balsdon    schedule 06.01.2013
comment
Извините, у меня нет excel 2007/10. Можно ли назначить макрос кнопке, попросив ее определить ее как RunMacro вместо MyWorkbook.xlsm!RunMacro в исходной книге?   -  person shahkalpeshp    schedule 06.01.2013


Ответы (1)


Вы должны быть в состоянии найти шаблон/оригинал, используя ThisWorkbook.


Кроме того, если вы предоставите код своей рабочей книги в формате .xlam вместо .xlsm, он будет открыт, но для него не будет окна, поэтому пользователи его не увидят.


Не уверен, что вы уже используете это, но вы также можете использовать «только для этой книги» при добавлении кнопок ленты для .xlam . (Доставка в формате .xlam позволяет устанавливать кнопки из книги на ленту, не полагаясь на путь к файлу и не требуя, чтобы ваши пользователи также устанавливали кнопки (вместо этого они устанавливают .xlam).)

person Erik Eidt    schedule 06.01.2013