Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».
Чтобы использовать пример ниже, откройте новую книгу.
Важно: Код 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, будет работать автоматически.
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
Добавлю к ответу igumnov.
Код необходимо вставить в модуль ЭтаКнига (Для Word — ThisDocument)
Alt+F11 — открываем проект VBA.
Слева — окно проекта, модуль находится там, в папке Microsoft Excel Objects
Исполняемый макрос записывается в общий модуль (в папке Modules).
Если модуля нет, его нужно создать: в редакторе VBA вкладка Insert-Module
Если окна проекта нет, открыть — меню Viev-Project Explorer (Ctrl+R)
Если макросы запрещены, никакими внутренними встроенными средствами поменять уровень безопасности нельзя. В VBA тоже нет такой команды. Это противоречило бы логике защиты: запрещаем макросы, но тем же макросом их разрешаем.
Поменять уровень безопасности вручную:
Для Excel-2003: меню Сервис-Макрос-Безопасность
Для Excel-2010 глубже: закладка ленты Файл-Параметры-Центр_управления_безопасностью-Параметры_центра_управления_безопасностью-Параметры_макросов
Программно менять уровень безопасности можно, но перед этим нужно установить на компьютер скрипт, который «умеет» менять уровень безопасности. Такие программы есть в свободном доступе.
Содержание
- Workbook_Open Событие
- Auto_Open
- Создавать и называть новый рабочий лист каждый раз, когда открывается Excel
- Установить лист по умолчанию при открытии книги
- Загружать форму при каждом открытии книги
Вам нужно запускать макрос при запуске Excel? У вас есть два варианта:
1. Создайте вложенную книгу Workbook_Open () в «ThisWorkbook».
2. Поместите подпрограмму Auto_Open () в любой модуль.
Workbook_Open Событие
Создайте подзаголовок «Workbook_Open» в «ThisWorkbook»
123 | Workbook_open ()MsgBox «Этот код запускался при запуске Excel!»Конец подписки |
Auto_Open
Используя второй метод: просто создайте подпрограмму Auto_Open и поместите в нее код или вызовите оттуда другую подпрограмму. Ваш код запускается автоматически при запуске Excel.
123 | Частный Sub Auto_Open ()MsgBox «Этот код запускался при запуске Excel!»Конец подписки |
Следующий код работает с открытием книги. Он автоматически добавляет новый лист и маркирует его датой. Он также проверяет, что лист еще не существует, что позволяет открывать его чаще, чем один раз в день.
Этот код использует событие открытия рабочей книги и должен быть помещен в модуль книги под событием «Открыть рабочую книгу». Функция Sheet_Exist должна быть помещена в модуль, и она проверяет, существует ли лист:
123456789101112131415 | Частная вспомогательная книга_Open ()Dim New_Sheet_Name As StringNew_Sheet_Name = Формат (Сейчас (), «дд-мм-гг»)Если Sheet_Exists (New_Sheet_Name) = False, тоС рабочей тетрадьюWorksheets.Add (). Name = New_Sheet_NameКонец сКонец, еслиСохранитьКонец подписки |
12345678910111213 | Функция Sheet_Exists (WorkSheet_Name As String) как логическое значениеТусклый рабочий лист как рабочий листSheet_Exists = ЛожьДля каждой рабочей_таблицы в ThisWorkbook.WorksheetsЕсли Work_sheet.Name = WorkSheet_Name, тоSheet_Exists = ИстинаКонец, еслиСледующийКонечная функция |
Чтобы загрузить файл .XLSM для этого руководства, щелкните здесь
Установить лист по умолчанию при открытии книги
Вы хотите, чтобы лист всегда показывался первым при открытии книги? Например, когда вы открываете книгу, лист 3 всегда является активным. Вот как.
Вы можете ссылаться на лист из VBA по имени программы (например, Sheet3) или по имени вкладки (например, JanData). Лучше использовать имя программы, потому что, если имя вкладки изменится, ваш код VBA, который ссылается на имя вкладки, больше не будет работать. Однако, если вы используете имя программы, пользователь может изменить имя вкладки несколько раз, и ваш макрос по-прежнему будет работать.
Чтобы убедиться, что определенный лист всегда активирован при открытии книги, просто поместите код sheet.activate в подпрограмму workbook_open. Это пример, который активирует Sheet3, используя имя программы каждый раз, когда открывается книга.
123 | Частная вспомогательная книга_Open ()Sheet3.ActivateКонец подписки |
И это делается с помощью имени вкладки:
1234 | Частная вспомогательная книга_Open ()Таблицы («mytabname»). АктивироватьКонец подписки |
Примечание: вы должны сохранить и перезапустить Excel, чтобы это работало.
Примечание: это работает, только если включены макросы.
Примечание: поместите этот код в окно кода для объекта ThisWorkbook в VBE.
Загружать форму при каждом открытии книги
Если вы хотите загрузить форму или запустить код VBA при открытии книги Excel, поместите свой код в окно кода этой книги и в подпрограмму Workbook_Open.
Из вашей таблицы:
1. Нажмите ALT и F11, чтобы открыть редактор VB.
2. Дважды щелкните слово ThisWorkbook, чтобы открыть окно кода.
3. Введите следующий код в окно кода ThisWorkbook.
123 | Частная вспомогательная книга_Open ()UserForm1.ShowКонец подписки |
Примечание: замените Userform1 именем вашей формы
4. Закройте Excel и снова откройте.
Вы поможете развитию сайта, поделившись страницей с друзьями
Добрый день!
Уже прочитал кучу инфы по поводу автоматического запуска, но что то все не хочет взлетать. Задача какая, есть скрипт, к примеру, который делает определенные модификации с листом к примеру вот:
Visual Basic | ||
|
Он должен выполняться при запуске любого файла Excel.
Что пробовал:
1. В книге PERSONAL.XLSB, модуль Thisworkbook создать
Visual Basic | ||
|
В результате при открытии любого файла Excel, я как понял, сначала открывается книга (но не лист), потом запускается макрос, так как лист не открылся — выдается ошибка(скриншот 1 и 2), потому что не к чему применять команды.
Ссылки удалены, читайте правила и это
2. Тоже самое происходит и с Auto_open
Подскажите может я что то не так делаю? Как можно сделать так чтобы скрипт обрабатывал любые Excel файлы при открытии?