Заставка при открытии книги 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. В открывшийся модуль формы добавьте такой код:
Откройте модуль ЭтаКнига в левом верхнем углу (если ее не видно - отобразите соответствующее окно через меню View - Project Explorer) и добавьте в него следующий код:
И, наконец, вставьте обычный модуль (Insert - Module) и скопируйте туда это:
Все. Можно закрывать редактор Visual Basic, сохранять файл и пробовать закрыть-открыть книгу.
Как это работает?При открытии книги Excel выполняет процедуру Workbook_Open из модуля ЭтаКнига. Эта процедура отображает на экране нашу форму-заставку. При отображении формы запускается процедура UserForm_Activate, которая с задержкой в 5 секунд запускает макрос KillTheForm, который убирает форму с экрана.
Ссылки по темеПривет! Отличный макрос, только если отчет с этим макросом открывать из письма Outlook высвечивается следующая ошибка: Run-time error '1004': Metod 'Ontime' of object '_Application' faild.
Когда сохраняешь файл на компьютер - этой ошибки нет. Можно это как-то исправить?
Попробовал это упражнение.Результат такой: в 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 как слепой котенок, но чаще всего это приносит свои плоды.
Добрый день, а защитил макрос, во время закрывание книг, спрашивает VBA пороль.Подскажите, пожалуйста, в чем моя ошибка?
И еще, в модулье ЭтаКнига у меня ранше был вот токой запис.
Здравствуйте! Что то у меня ни чего не получилось. При повторном открытие пишет ошибку.
Run-Time error 424:Objekt required
Всем доброго дня!
Кроме заставки, можно еще сделать приветствие пользователя голосом.Не могу сказать точно с какой версии Win это работает, но у меня на Win8-10 работат 100%.
Для этого нам нужен Microsoft Speech API (SAPI) 5.3
Простая процедура позволит приветствовать пользователя по заданному имени:
При запуске этой процедуры система нам голосом скажет "Привет Иванов Иван Иванович".Вот так просто ))
Событие можно повесить на открытие книги, соответственно при открытии книга будет приветствовать вас голосом.
Если одна общая книга используется многими пользователя, то можно использовать функционал получения имени пользователя из переменной окружения (например - username), в этом случае имя будет например такое - "Ivanov.Ivan".Также при наличии ActiveDirectory можно получать данные напрямую из AD с помошью вот такой функции (нашел ее где-то на просторах интеренета):
И в результате мы получим вот такую процедуру, которая получает текущее имя пользователя (с компьютера которого открывается книга) и приветствует пользователя по имени, полученному из ActiveDirectory: