Автозапуск файла при открытии Excel

Сегодня мы поговорим о том, как добиться автоматического открытия вашего файла 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

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Спасибо :)

Спасибо, помогло.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
         ____     ___                    _     
__ __ | __ ) ( _ ) __ _ __ __ | |__
\ \/ / | _ \ / _ \ / _` | \ \ / / | '_ \
> < | |_) | | (_) | | (_| | \ V / | |_) |
/_/\_\ |____/ \___/ \__, | \_/ |_.__/
|_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.