Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите: автоматически выполняемый макрос

14K
05 декабря 2006 года
Njif
29 / / 05.12.2006
Кто-нибудь!
Пожалуйста подскажите новичку в такой проблеме:

Есть екселевский документ (Exel 2003). Есть макрос, который вносит в содержимое документа некоторые изменения.
Как сделать так, чтобы этот макрос выполнялся автоматически по событиям: открытие документа, активация нужной страницы?
Т.е. иначе говоря, например, выполнялся сам автоматически сразу при открытии документа.
Нигде не могу это найти.
Спасибо большое заранее!!

p.s. [FONT="Comic Sans MS"]Для других событий додумкаю по аналогии...[/FONT]
9.9K
05 декабря 2006 года
KVP
5 / / 24.02.2005
Сервис\Макрос\редактор VBA
дальше щелчек по ЭтаКнига
или Лист
В открывшемся редакторе Workbook или Worksheet
рядом справа куча встроеных макросов: двойной щелчек, выбор и т.д
405
05 декабря 2006 года
Dmitrii
554 / / 16.12.2004
Цитата: Njif
Т.е. иначе говоря, например, выполнялся сам автоматически сразу при открытии документа.


Загляните сюда: http://forum.codenet.ru/showthread.php?t=16768

Цитата: Njif
Как сделать так, чтобы этот макрос выполнялся автоматически по событиям: ... активация нужной страницы?


В модуле кода интересующего Вас рабочего листа разместить макрос с заголовком:
[color=blue]Private Sub Worksheet_Activate()[/color]

14K
05 декабря 2006 года
Njif
29 / / 05.12.2006
Cпасибо большое !!!
точно работает :)

У меня теперь только один вопрос. Когда я пытался найти это в хелпаке,то наткнулся на такой примерчик в ивентах

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

End Sub

который того же результата, что и Workbook_Open (), не дал.
Просветите пожалуйста почему? И что я вообще такое нашел?
267
05 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Njif
Cпасибо большое !!!
точно работает :)

У меня теперь только один вопрос. Когда я пытался найти это в хелпаке,то наткнулся на такой примерчик в ивентах

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

End Sub

который того же результата, что и Workbook_Open (), не дал.
Просветите пожалуйста почему? И что я вообще такое нашел?



Это относится к открытию ПРОИЗВОЛЬНОЙ книги. Эти события надо активировать особым образом через модули класса. А у тебя открытие конкретной книги. Поэтому этот вариант тебе не нужен.

===========
Вот ещё по поводу автоматического запуска макроса при открытии (это я пару лет назад объяснял по тому же поводу, а тебе просто скопирую):

Есть два способа:
Или разместить в обычном модуле макрос с названием
Auto_Open, или разместить в модуле книги макрос Workbook_Open.

Отличие между ними состоит в следующем:
Workbook_Open. Он запускается и при открытии "руками" и при открытии программно (с помощью Workbooks.Open) - если только перед этим не были отключены обработчики ошибок командой Application.EnableEvents = False.

Auto_Open. Запускается только при открытии руками, зато не отключается .EnableEvents

Скорее всего, тебе все равно, какой использовать. Я обычно использую Auto_Open. Чтобы иметь возможность открывать подобные файлы без запуска, у меня есть файлик с Workbooks.Open (я не очень люблю отключать-включать обработчики событий, использую это только в самых крайних случаях).

14K
05 декабря 2006 года
Njif
29 / / 05.12.2006
Здорово, Cutty Sark!! Спасибо, буду знать!
А про ячейки можешь что-нибудь подсказать, пожалуйста?
405
05 декабря 2006 года
Dmitrii
554 / / 16.12.2004
Цитата: Njif
У меня теперь только один вопрос. Когда я пытался найти это в хелпаке,то наткнулся на такой примерчик в ивентах

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

End Sub

который того же результата, что и Workbook_Open (), не дал.
Просветите пожалуйста почему? И что я вообще такое нашел?


Это пример работы с событием, относящимся к объекту Application (в Вашем случае это Excel). Найденный Вами пример должен быть использован в модуле кода класса. По сути это описание метода для некоего класса.
Вас же интересует событие объекта Workbook.

Прошу прощения за такую краткость, но подробнее отвечать пока некогда.

10K
06 декабря 2006 года
evgedka
22 / / 25.04.2005
Черт меня дери! Как, блин, приятно видеть специалистов ТАКОГО уровня здесь (без ложной скромности). Я уж было начал думать, что Excel начаинает "кануть в лету". СУПЕР! Неужели в природе еще существуют люди, способные разобраться в этих строках и столбцах лучше, чем я??? Я ФИГЕЮ!!!!!!!!!!!!!!
459
08 декабря 2006 года
gacol
273 / / 12.02.2003
Цитата: Njif
Здорово, Cutty Sark!! Спасибо, буду знать!
А про ячейки можешь что-нибудь подсказать, пожалуйста?



вопрос не мне, но отвечу (извини Cutty Sark)
1 - надо поймать событие изменения на листе
2 - проверть относится ли это событие к нужному диапазону
ниже пример для [A1]

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address <> "$A$1" Then Exit Sub
. . . .
End Sub

14K
08 декабря 2006 года
Njif
29 / / 05.12.2006
Цитата: gacol

2 - проверть относится ли это событие к нужному диапазону
ниже пример для [A1]
End Sub



Так ведь изменения не только выделениями могут быть !?
И в поем случае диапазон не известен заранее, а определяется динамически...

267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Хоть убейте, а я не вижу в этой теме ни одного вопроса "про ячейки". Слепой я, что ли, стал?
14K
08 декабря 2006 года
Njif
29 / / 05.12.2006
извини... как-то проскочило...
я хотел спросить:
на странице есть произвольный набор выделенных диапазонов, в том числе и не связанных.
Как можно определить какие ячейки на странице выделены?
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Теперь всё понял. У нас тут действует правило: новый вопрос - в новую тему. Поэтому я относящееся к этому в своё время перенёс сюда:
http://forum.codenet.ru/showthread.php?t=32526
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог