Заставка при открытии книги Excel
Этот прием позволит Вам выводить на экран окно-заставку при открытии любой заданной книги в Excel.
Заставка появляется сразу после открытия файла и автоматически исчезает через несколько секунд.
Шаг 1. Создаем экранную форму
Откройте редактор Visual Basic - в старых версиях Excel это можно сделать через меню Сервис - Макрос - Редактор Visual Basic (Tools - Macro - Visual Basic Editor), а в новых кнопкой Visual Basic на вкладке Разработчик (Developer) и создайте новую форму, используя команду меню Insert - UserForm. Появится пустая серая оконная форма будущей заставки. Добавим на нее изображение при помощи панели инструментов Toolbox (если у вас ее не видно, то зайдите в меню View - Toolbox):
Нажмите кнопку Image и растяните на форме прямоугольник - в него будет помещено фоновое изображение. Затем на панели инструментов Properties (если у вас ее не видно, то выберите в меню View - Properties) задайте выберите файл картинки в поле Picture:
Возможно, придется немного изменить размер формы, чтобы изображение уместилось полностью. Чтобы написать на форме текст, можно использовать элемент управления Label с панели Toolbox.
Ну, и наконец, выделив предварительно всю форму, можно задать текст в строке заголовка, используя свойство Caption в панели Properties:
В итоге у вас должно получиться нечто подобное:
Шаг 2. Добавляем управляющий код
Щелкните правой кнопкой мыши по форме и выберите View Code. В открывшийся модуль формы добавьте такой код:
Private Sub UserForm_Activate() Application.OnTime Now + TimeValue("00:00:05"), "KillTheForm" End Sub
Откройте модуль ЭтаКнига в левом верхнем углу (если ее не видно - отобразите соответствующее окно через меню View - Project Explorer) и добавьте в него следующий код:
Private Sub Workbook_Open() UserForm1.Show End Sub
И, наконец, вставьте обычный модуль (Insert - Module) и скопируйте туда это:
Private Sub KillTheForm() Unload UserForm1 End Sub
Все. Можно закрывать редактор Visual Basic, сохранять файл и пробовать закрыть-открыть книгу...
Как это работает?
При открытии книги Excel выполняет процедуру Workbook_Open из модуля ЭтаКнига. Эта процедура отображает на экране нашу форму-заставку. При отображении формы запускается процедура UserForm_Activate, которая с задержкой в 5 секунд запускает макрос KillTheForm, который убирает форму с экрана.
Ссылки по теме
Когда сохраняешь файл на компьютер - этой ошибки нет. Можно это как-то исправить?
Заранее спасибо!
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Попробовал это упражнение.
Результат такой: в Excel 2010 все отлично работает.
А в 2013 - проходят отмеренные 5 секунд и выскакивает ошибка "Run-time error '424' Object required"
При попытке отладить подсвечивается последняя строчка End Sub в модуле KillTheForm.
Единственное, что я переименовал UserForm1 в Hello и дважды заменил его название в коде.
Попробовал без переименования - все работает.
Подскажите, пожалуйста, в чем моя ошибка?
Скажите, а как сделать, чтобы форму нельзя было закрыть, пока она сама не закроется?
Наверно это что-то связанное с созданием Userform, и конфликтом в исполнении модуля с бекапом и формы. Сначала я переименовал форму, естественно, поменяв все необходимые ссылки на неё в текущей книге и модуле2. Обнаружил проблему с бэкапом. Подумал, решил, может быть, макросы выполняются при запуске в иерархичном порядке, переименовал userform так, чтобы в списке модулей он отображался позже модуля бэкапа. Не помогло. Возникла следующая идея. Удалил модуль2, относящийся к картинке, макрос оттуда добавил в модуль1(бэкап). Тоже не помогло. Картинка как работала, так и работает, но бэкап не сохраняется. Новых идей у меня, к сожалению, пока не возникло. Походу придется удалять заставку, так как функция бэкапа, объективно, важнее всяких картиночек.
Николай, обращаюсь к вам за советом, может быть вы знаете, в чем проблема, и надеюсь, что вы увидите и ответите. Заранее спасибо.
upd. Вопрос решил, добавив в макрос в ЭтаКнига строку Module1.auto_open.
p.s. Я тыкаюсь в vba как слепой котенок, но чаще всего это приносит свои плоды.
Прошу помощи (подсказки) все сделал как описано и все работает но есть но.... при запуске любого файла если эксель еще не запущен (при первом запуске) любого файла картина появляется и пропадает а далее серый фон и рабочий стол экселе но файл который открывал не открывает, приходится сворачивать окно экселя и снова запускать файл и только тогда он открывается. Какой код куда дописать чтоб сразу после картинки открывался файл как и ранее до появления картинки? Как Вы описывали с добавлением Module1.auto_open эксель ругается открывает книгу и окно с макросами. Прошу Вашей помощи что может быть возможно знаете или у Вас это же было?
Подскажите, пожалуйста, в чем моя ошибка?
И еще, в модулье ЭтаКнига у меня ранше был вот токой запис.
которой проверяет имя компютера, при несовподание, закрывает книгу.
как написать модуль, чтобы в месте работали?
Run-Time error 424:
Objekt required
[url=http://nick-name.ru/nickname/id1208315/][img]
Кроме заставки, можно еще сделать приветствие пользователя голосом.
Не могу сказать точно с какой версии Win это работает, но у меня на Win8-10 работат 100%.
Для этого нам нужен Microsoft Speech API (SAPI) 5.3
Простая процедура позволит приветствовать пользователя по заданному имени:
Вот так просто ))
Событие можно повесить на открытие книги, соответственно при открытии книга будет приветствовать вас голосом...
Если одна общая книга используется многими пользователя, то можно использовать функционал получения имени пользователя из переменной окружения (например - username), в этом случае имя будет например такое - "Ivanov.Ivan".
Также при наличии ActiveDirectory можно получать данные напрямую из AD с помошью вот такой функции (нашел ее где-то на просторах интеренета):
Попытался повторить ваш пример, но, видать, что-то получилось как всегда и у меня на служебном компе появляется картинка, а вот скрываться не хочет. Попытался удалить файл, но все тоже самое происходит и с другими книгами экселя. В другой книге попробовал удалить макрос, но похоже удалил начальный макрос экселя. Теперь, что не запущу появляется картинка и ни одна книга не открывается нормально с той информацией которая в ней была. Помогите, пожалуйста, как восстановить первичные настройки и удалить нацарапанный мной макрос?
Заранее благодарен.
Макрос будет выглядеть примерно так:
Прошу помощи (подсказки) все сделал как описано и все работает но есть но.... при запуске любого файла если эксель еще не запущен (при первом запуске) любого файла картина появляется и пропадает а далее серый фон и рабочий стол экселе но файл который открывал не открывает, приходится сворачивать окно экселя и снова запускать файл и только тогда он открывается. Какой код куда дописать чтоб сразу после картинки открывался файл как и ранее до появления картинки? Выше
Ожидаю ответ.
Спасибо!
Заставка появляется только в этом файле, у меня так. Возможно, чтоб эта заставка была во всех открывающих экселях?
Если нужно, чтобы появлялась всегда, при открытии любой книги Excel, то макрос и форму нужно добавлять в