Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».
Чтобы использовать пример ниже, откройте новую книгу.
Важно: Код VBA нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.
-
Откройте вкладку Разработчик и щелкните элемент Visual Basic.
-
В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook. Если вы не видите обозреватель Project, перейдите в > Project проводникаили нажмите CTRL+R.
-
В окне модуля, которое открывается справа, вставьте следующий код:
Private Sub Workbook_Open() ' Put your code here End Sub
-
В конце и подмножите записи в процедуру Sub.
Закройте редактор Visual Basic (вам не нужно ничего сохранять).
-
Сохраните книгу как книгу Excel Macro-Enabled (XLSM)и закроем ее.
При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.
Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Для этого:
-
В меню выберите пункт Параметры Excel >… >ленты & панели инструментов.
-
В категории Настройка ленты в списке Основные вкладки выберите вариант Разработчик.
-
Нажмите кнопку Сохранить.
Чтобы использовать пример ниже, откройте новую книгу.
Важно: Код VBA нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.
-
Откройте вкладку Разработчик и щелкните элемент Visual Basic.
-
В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook.
-
В окне модуля, которое открывается справа, вставьте следующий код:
Private Sub Workbook_Open() ' Put your code here End Sub
-
В конце и подмножите записи в процедуру Sub.
Закройте редактор Visual Basic (вам не нужно ничего сохранять).
-
Сохраните книгу как книгу Excel Macro-Enabled (XLSM)и закроем ее.
При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.
- Книги Excel
- Средства Windows
Сегодня мы поговорим о том, как добиться автоматического открытия вашего файла 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 DataMicrosoftExcelXLSTART,
для других версий 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:WINDOWSTemp 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
- 56436 просмотров
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
To run a macro automatically when the workbook opens one must enable the developer’s tools in Microsoft excel.
Steps to enable the developer’s tool:
Step 1: Go to File > Options > Customize Ribbon
Step 2: Then checkmark the Developer’s tool option in the customize ribbon option.
Now you can record Macro, run Macro and do everything that a developer can do.
Steps to run macro automatically when the workbook opens:
Step 1: Go to the developer’s menu and then go to the visual basic.
Step 2: Go to ThisWorkbook Tab.
Step 3: Write down Private Sub Workbook_open() and hit enter. You will then see the below screen.
You can write your code or basically whatever you want between this and it will automatically run every time the workbook is opened.
Let us make a Welcome Message Box:
Step 4: Save the workbook as Excel Macro-Enabled Workbook.
Note: If you don’t save it as an Excel macro-enabled workbook then it will not save the macros and it will simply save as a normal excel file.
Output:
Now, whenever you open this workbook you will see this message box pops up automatically.
Like Article
Save Article
0 / 0 / 0 Регистрация: 24.11.2012 Сообщений: 16 |
|
1 |
|
Автоматический запуск макроса при открытии любой книги, которая соответствует конкретным условиям26.11.2012, 13:46. Показов 9062. Ответов 5
Добрый день, уважаемые форумчане! Нужна ваша помощь
0 |
mc-black 2784 / 716 / 106 Регистрация: 04.02.2011 Сообщений: 1,443 |
||||
26.11.2012, 13:56 |
2 |
|||
Сообщение было отмечено как решение РешениеСоздайте новую книгу, вставьте код, приведенный ниже, в модуль книи и сохраните книгу как .xla / .xlam (зависит от версии Office):
Полученную надстройку положить в каталок с надстройками и включите надстройку
3 |
Maksymromaniuk 0 / 0 / 0 Регистрация: 24.11.2012 Сообщений: 16 |
||||||||
27.11.2012, 12:06 [ТС] |
3 |
|||||||
Спасибо! Правда добавил после
Но не суть, раньше не работал с надстройками. Клевая вещь Спасибо еще раз)
0 |
2784 / 716 / 106 Регистрация: 04.02.2011 Сообщений: 1,443 |
|
27.11.2012, 13:21 |
4 |
Всё верно. Один из плюсов — макрос в надстроке выполнится всегда, даже когда отключишь макросы в Excel.
0 |
0 / 0 / 0 Регистрация: 18.05.2016 Сообщений: 118 |
|
23.06.2016, 11:37 |
5 |
У меня ситуация такая же, только мне надо открывать файл с любым именем, когда я вставил ваш код в Vba, то у меня красным выделила строку dim xl_app…. Как мне решить эту проблему?
0 |
Веди 22 / 13 / 1 Регистрация: 04.07.2012 Сообщений: 477 |
||||
29.11.2016, 18:51 |
6 |
|||
сделал файл надстройки .xla, подключил его, всё он нормально подключается и в книге написал код:
подтверждаю сообщение ОК, а дальше ошибка, ругается на «method cells of object _global failed»
0 |
Как запустить макрос при любом старте EXCEL, включая случаи передачи данных из приложений, например, из FineReader распознанный текст. Книга с этими данными не сохранена еще на диске. |
|
ikki Пользователь Сообщений: 9709 |
файл с макросом — в папку XLSTART фрилансер Excel, VBA — контакты в профиле |
Не получается так. |
|
ikki Пользователь Сообщений: 9709 |
гм?.. пс. про Personal.xls я вообще не говорил. это то же самое? фрилансер Excel, VBA — контакты в профиле |
Может кто-нибудь знает как обработать «УПАВШИЕ» в EXCEL данные из другого приложения с помощью макросов? |
|
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Вы что, хотите сказать, что при открытии Ёкселя, когда автоматом создаётся ещё не сохраненная нигде пустая Книга1, у вас не открывается, лежащий в папке XLSTART файл Personal.xls и не отрабатываются его события? С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
ИМЕННО ТАК, ПОПРОБУЙТЕ САМИ. |
|
ran Пользователь Сообщений: 7091 |
Тоже засомневался и проверил. |
может быть, я чего-то не понимаю, охота разобраться, т.к., хоть до сих пор не использовал такую возможность, но сейчас, благодаря этому форуму, кажется, нашёл реальное применение в своей работе. |
|
Serge Пользователь Сообщений: 11308 |
При выгрузке из 1С не происходит события открытия (запуска) Экса. |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
Не поленился, проверил. С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
слэн Пользователь Сообщений: 5192 |
попробуйте грузить в ворд — там шаблон всегда грузится, а в нем можно макрос запускать |
Alex_ST Пользователь Сообщений: 2746 На лицо ужасный, добрый внутри |
{quote}{login=The_Prist}{date=28.03.2011 10:05}{thema=}{post}…Сторонние приложения запускают Excel типа в безопасном режиме(вроде как с зажатой клавишей Shift). Так что все макросы и надстройки игнорируются {/post}{/quote} С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!) |
{quote}{login=Mijver}{date=27.03.2011 01:54}{thema=Запуск макроса при любом старте EXCEL}{post}Как запустить макрос при любом старте EXCEL, включая случаи передачи данных из приложений, например, из FineReader распознанный текст. Книга с этими данными не сохранена еще на диске.{/post}{/quote} КАК Я ПОНЯЛ — НАДО РУКАМИ СОХРАНЯТЬ ФАЙЛ «УПАВШИЙ» ИЗ ПРИЛОЖЕНИЯ, ПОТОМ ЗАСТАВИТЬ ЕГО ИСКАТЬ, ЧТОБЫ ЗАПУСТИЛСЯ МАКРОС… ИЛИ В ПРИЛОЖЕНИИ КОВЫРЯТЬСЯ, ЕСЛИ ОНО ПОЗВОЛИТ… |
|
Hugo Пользователь Сообщений: 23252 |
А может vbs запустить? Set objExcel = GetObject(, «Excel.Application») |
ran Пользователь Сообщений: 7091 |
Из файнридера не грузится. |
Mijver: «КАК Я ПОНЯЛ — НАДО РУКАМИ СОХРАНЯТЬ ФАЙЛ «УПАВШИЙ» ИЗ ПРИЛОЖЕНИЯ». И не иначе — вы указываете Абби куда передать распознанное, вызывается соответствующее приложение и в него помещаются данные, как вы с ними согласились — запомнили. Нет, назад в Абби, правите в Абби, и снова передача… Во всяком случае даже по «короткой» дорожке (зависит от версии)- автоматом распознать и передать в XL — требуется сохранять под указанным именем. Или что-то не договаривают… |
|
СПАСИБО ЗА ОБСУЖДЕНИЕ. |
|
Не думал, что это может кого-то раздражать. Извините, если что не так. Я думал здесь не буквы читают а мысли. |
|
Юрий М Модератор Сообщений: 60581 Контакты см. в профиле |
{quote}{login=Mijver}{date=28.03.2011 11:09}{thema=Re: }{post}Я думал здесь не буквы читают а мысли.{/post}{/quote} |
ikki Пользователь Сообщений: 9709 |
вот, встретил у Уокенбаха: переключатель командной строки /automation фрилансер Excel, VBA — контакты в профиле |
ZVI Пользователь Сообщений: 4328 |
Из других приложениий Excel, как правило, запускается в режиме автоматизации через CreateObject(«Excel.Application»). При этом создается отдельный объект (класса) Excel без загрузки надстроек, кроме COM-надстроек. То есть, если создать свою COM-надстройку и подключить её к Excel, то такая надстройка, в принципе, позволит контролировать Excel. |
dimaqw Пользователь Сообщений: 1 |
#23 28.05.2012 12:50:31 думаю оно. во всяком случая очень нужная вещь: http://www.excel-vba.ru/chto-umeet-excel/kak-otsledit-sobytienaprimer-vydelenie-yacheek-v-lyuboj-knige/ |