|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.07.2010, 17:54 | #11 | |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Цитата:
Если Вы изначально строили свои коды под работу с надстройкой, то при переносе проблем с выполнением процедур в активной книге быть не должно. Надстройка скрыта, данные обрабатываются на активной книге. Но в Вашем случае, я полагаю, Вы в кодах обращаетесь к ThisWorkbook, что означает обращение к книге, в которой расположен код, не зависимо от того, какая книга активная. Вам необходимо все Ваши коды привести к виду, где обращение всегда идет к активной книге, кроме случаев обращения к "служебным" листам надстройки. Кнопки вызова процедур надстройки должны быть не в отдельной книге на листах, а именно на отдельной панели. Вы сами их создаете при каждом запуске надстройки. Подробнее читайте в Гугле. Это долгая история.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
|
01.07.2010, 20:10 | #12 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
Не спорю. Я действительно относительно недавно стал работать с VBA. Для меня Excel - вспомогательный инструмент для преобразования исходной информации для других программируемых систем (ПЛК разных производителей).
По ThisWorkbook я к книге не обращаюсь, т.к. одновременно имею дело с одной. Я работаю с именами страниц след. образом (все книги содержат одинаковый по именам набор страниц, но с разными данными в их таблицах): По нажатию кнопки на странице попадаю в обработчик, откуда передаю управление в модуль, работающий с данной страницей. А там поступаю так SheetName = ActiveSheet.name Set Worksheet = Worksheets(SheetName), после чего выполняю требуемую обработку данных на странице с записью резудьтата на нее же. Если работаю с двумя и более страницами, создаю соответствующие ссылки на них. PS: Изначально я с надстройками не работал и не планировал и даже ничего не знал о них. Применение Excel в указанном выше плане мне было даже навязано. Но в тот момент почти все выполнялось в строке формул (СЦЕПИТЬ, НАЙТИ и.т.д.). Сложность в этом случае быстро достигает предела восприятия. Поэтому я и принялся "читать книги, Гугл". Сперва вся обработка была перенесена на кодовые листы страниц. Быстро стали набираться "общие места", которые были вытеснены в модули, а затем появилось желание работать с любой книгой на "физически" одном наборе модулей. С этого и начинается мой пост. PPS: Ну вот, заработало. Правда уже дома под Excel2000, а не на работе под Excel2007. Еще предстоит помучиться. Но сразу возникает вопрос: а можно держать файл надстройки вместе с файлами рабочих книг в одной директории и регистрировать его автоматически, напр. при открытии одной из книг, работающей с ней? (что бы переносить с компа на комп под разными версиями Excel) Последний раз редактировалось cskcsk; 01.07.2010 в 20:56. |
02.07.2010, 09:59 | #13 | |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Это можно заменить одной строкой и минус одна переменная. Только не надо давать переменным зарезервированные имена - типа Вашего Worksheet - может отсюда и ошибки в выполнении кода(в том числе неработа в разных версиях Excel)?
Код:
Цитата:
Если же Вы хотите непосредственно с флешки запускать, то проще будет создать вспомогательную надстройку, которая будет проверять имя открываемой книги, сверять её с шаблоном и определять - надо ли искать флешку и запускать основную надстройку с неё.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
|
02.07.2010, 10:44 | #14 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
Все уже заработало без каких-либо изменений, в т.ч. worksheet и прочее.
Так как на работе - 2007 с его долбаным риббоном, то, вероятно, тыкал не туда. Дома на 2000 разобрался за 15 минут, после чего и на 2007 подхватило. Спасибо за участие. Последний раз редактировалось cskcsk; 02.07.2010 в 10:49. |
02.07.2010, 11:07 | #15 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Я все же посоветовал бы заменить данное имя переменной на не зарезервированное. Это как минимум неправильно и нестабильная работа приложения гарантирована.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
02.07.2010, 11:35 | #16 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Общие функции и процедуры | Sensizu | Общие вопросы Delphi | 6 | 17.06.2010 21:42 |
общие папки | Aleksandr | Свободное общение | 1 | 05.10.2009 14:29 |
Общие вопросы по C# | smartboy | Общие вопросы .NET | 1 | 17.07.2009 21:14 |
Общие вопросы по mysql | pushok | PHP | 1 | 14.01.2008 22:57 |
Администрирование\управление компьютером\Общие папки\Общие ресурсы\прекратить общий доступ | lm_strj | Безопасность, Шифрование | 2 | 13.10.2007 21:28 |