Сегодня мы поговорим о том, как добиться автоматического открытия вашего файла Excel (книги или надстройки) при запуске приложения Microsoft Excel
Способов добавить файл в автозагрузку Excel достаточно много, поэтому мы рассмотрим только самые основные:
- открытие файлов из папки автозапуска
- подключение файла как надстройки
Начнём с папки автозагрузки (точнее, с папок, поскольку их может быть несколько)
При установке Excel создаётся специальный каталог XLSTART, все файлы из которого автоматически открываются в Excel при его запуске
Путь к этой папке можно получить макросом из свойства Application.StartupPath:
Sub ПапкаАвтозапускаExcel() ' читаем путь к папке из настроек Excel Folder$ = Application.StartupPath MsgBox Folder$, vbInformation, "Папка автозапуска Excel" ' открываем эту папку в Проводнике Windows CreateObject("wscript.Shell").Run """" & Folder$ & """" End Sub
На моём компьютере (под управлением Windows XP), эта папка расположена по пути
C:\Documents and Settings\<имя пользователя>\Application Data\Microsoft\Excel\XLSTART\,
для других версий OC путь может отличаться
Достаточно в эту папку перетащить ваш файл (или файлы, причем неважно какие - книги Excel, текстовые файлы, CSV и т.п.) - и при запуске приложения все эти файлы будут открыты в Excel
Кстати, сами файлы перемещать в эту папку необязательно - достаточно поместить в папку автозапуска ЯРЛЫКИ на эти файлы
(например, ярлык можно создать путем перетаскавания мышом файла в папку, удерживая клавишу Alt)
Хочу обратить ваше внимание, что вы можете в настройках Excel указать ещё одну папку автозапуска, файлы из которой также будут открываться автоматическе при запуске Excel
Сделать это можно, если указать путь к вашей папке в параметре "Каталог автозагрузки":
(в Excel 2003 меню Сервис - Параметры, вкладка Общие)
Итак, у нас есть как минимум 2 папки, все файлы из которых будут открываться вместе с Excel.
Какие же ещё способы предоставляет нам программа?
Подключение надстройки Excel
Эта возможность предоставляется только для книг Excel, сохранённых как надстройка (с расширением XLA)
Если у нас есть такая надстройка, и мы хотим, чтобы она запускалась каждый раз при открытии Excel, мы можем её подключить через меню Сервис - Надстройки (в Excel 2003):
(чтобы этот пункт меню был доступен, в Excel должна быть открыта хоть одна книга (любая))
Здесь мы нажимаем кнопку «Обзор...», выбираем наш файл (после выбора он появится в списке доступных надстроек), ставим напротив него галочку, - и надстройка автоматически загружается в Excel
После этих действий, при каждом запуске приложения Excel ваша надстройка будет доступна (открыта)
Как видно из вышеприведённого скриншота, у меня вместе с Excel постоянно загружаются 4 надстройки (пятую я временно отключил)
А что же делать, спросите вы, если требуется макросом включать и отключать автозапуск той или иной надстройки?
В этом вам поможет мой макрос AddinAutoRun, который добавляет (создаёт) или удаляет ЯРЛЫК на текущий файл в папку автозапуска Excel
Код макроса достаточно прокомментирован, так что понимание его алгоритма не должно вызвать затруднений:
Sub AddinAutoRun(Optional ByVal Disable As Boolean) ' макрос добавляет ярлык в папку автозагрузки Excel, ' файлы из которой автоматически запускаются вместе с приложением ' После этого действия надстройка будет запускаться автоматически ' Если макрос запущен с параметром Disable=TRUE, ' то данный файл удаляется из автозапуска On Error Resume Next If ThisWorkbook.Path Like Environ("temp") & "*" Then ' если файл запущен из архива (без предварительного извлечения), или из папки TEMP AddinsFolder$ = Replace(Application.UserLibraryPath & "\", "\\", "\") ' если папка AddIns недоступна, будем сохранять файл в папке C:\WINDOWS\Temp\ If Dir(AddinsFolder$, vbDirectory) = "" Then AddinsFolder$ = Environ("temp") & "\" Application.DisplayAlerts = False ThisWorkbook.SaveAs AddinsFolder$ & ThisWorkbook.Name ' сохраняем файл по постоянному пути Application.DisplayAlerts = True End If ' PROJECT_NAME$ = "MyAddin" ' если в вашем файле нет константы PROJECT_NAME$ ShortcutName$ = PROJECT_NAME$ & ".lnk" ' формируем имя файла ярлыка, например, "MyAddin.lnk" ShortcutFullName$ = Replace(Application.StartupPath & "\" & ShortcutName$, "\\", "\") On Error Resume Next If Disable Then ' Если макрос запущен с параметром Disable=TRUE, удаляем ярлык из автозагрузки Kill ShortcutFullName$ Else ' иначе добавляем ярлык в автозагрузку Excel Set AddinShortcut = CreateObject("WScript.Shell").CreateShortcut(ShortcutFullName$) AddinShortcut.TargetPath = ThisWorkbook.FullName AddinShortcut.Save End If ' на всякий случай (чтобы исключить двойной запуск файла), ' проверяем наличие файла в списке подключенных надстроек, ' и, если находим его в этом списке, - отключаем надстройку Dim AI As AddIn For Each AI In Application.AddIns ' перебираем все надстройки If AI.Name = ThisWorkbook.Name Then AI.Installed = False Next AI End Sub
Пример использования макроса: (код из модуля книги)
Private Sub Workbook_Open() ' при запуске файла добавляем ярлык на него в папку автозагрузки Excel AddinAutoRun End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ' при закрытии файла интересуемся, нужен ли автозапуск программы, ' и если не нужен, то отключаем автозапуск, удаляя ярлык msg = "При следующем запуске Excel эта программа будет запущена автоматически." & _ vbNewLine & "Оставить программу в автозапуске?" ' если пользователь выберет ответ НЕТ, ярлык из папки автозапуска будет удалён If MsgBox(msg, vbQuestion + vbYesNo) = vbNo Then AddinAutoRun False End Sub
Комментарии
Спасибо :)
Спасибо, помогло.
Отправить комментарий