Как сделать скрипт для windows 10

Excel VBA — автоматическое выполнение скрипта

Видеокурсы по Excel

В сотрудничестве с SEDUO я создал несколько видеокурсов:

  • Как работать с Excel – научитесь эффективно использовать Excel – самый популярный ( рейтинг 97 %, более 13 000 студентов, + 750 положительных отзывов ) – Получить курс
  • MaxiCourse Excel – получите лучшую работу, больше денег, станьте незаменимым ( более 6 часов просмотра, 160 уроков ) – Получить курс
  • G-таблицы. — если не нравится Excel, воспользуйтесь курсом на Google-таблицах

Как настроить Excel VBA для запуска сценария исправления при запуске.

Статья обновлена ​​и дополнена.

Если мы хотим, чтобы MS Excel выполнял какое-либо действие при запуске. У нас есть выбор:

  • Выполнение скрипта каждый раз, т.е. если файл будет запускаться вручную или с помощью удаленного скрипта.
  • Выполнение скрипта только при ручном запуске — т.е. если файл запускается скриптом, запрошенное действие выполнено не будет.
  • Выполнение скрипта автоматически — только при открытии скриптом.

Автоматически запускать скрипт при открытии книги

При запуске этого файла автоматически и вручную.

Как это сделать? Просто поместите следующий код в ThisWorkbook :

Private Sub Workbook_Open()
MsgBox «office.lasakovi.com»
End Sub

Примечание. После запуска Excel появится диалоговое окно с текстом: «office.lasakovi.com». т.е. при событии (открытие книги) выполняется требуемый код (отображение диалогового окна).

Автоматическое выполнение скрипта при «ручном» вызове.

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

Как это сделать? Используйте команду Auto_Open, поместите ее в модуль

Sub Auto_Open() MsgBox «выполняется с ошибкой» End Sub

Выполнение скрипта в файле, вызываемом скриптом.

Куда добавить скрипт, вызывающий этот файл.

Контент

Этот текст написан специально, потому что я получаю много вопросов о том, как запустить макрос при открытии файла Excel. Я предполагаю, что вы умеете запускать Visual Basic и знаете, как вставить соответствующий код в ThisWorkbook .

Статья обновлена: 19.09.2020 11:07

Если

Помог ли этот веб-сайт сэкономить вам время и деньги? Помог ли он решить проблему? Готовы ли вы предоставить символическое вознаграждение за дальнейшее развитие? Выберите форму вознаграждения, которая вам подходит.

Павел Ласбк — автор сайта

Microsoft Office (Word, Excel, Google Sheets , PowerPoint) Я использую с 2000 года (с 2004 года в этом домене) — В 2017 году я получил престижную награду MVP от Microsoft (пока я единственный из IR в категории Excel). Я также делюсь своими знаниями и опытом онлайн в видеороликах для SEDUO . В компаниях преподаю и консультирую , работаю в МУНИ. Я создаю этот сайт более 15 лет. Существует более 1000 бесплатных инструкций, советов и рекомендаций, включая более 250 различных шаблонов и рабочих книг.

Комментарии

Павел Ласбак

Добавлено: 09.03.11 18:01

Чтобы открыть форму во время работы Excel:
Private Sub Workbook_Open()
При ошибке Возобновить Далее
Userform1.show
End Sub

Иди туда

Добавлено: 17.03.11 20:54

Здравствуйте, можно ли настроить Excel на автоматическое отключение, например, через пять минут бездействия? я думаю

Павел Ласбак

Добавлено: 18.03.11 18:04

Ондшей:
Все происходит так. Первый макрос запустит второй через 30 секунд. Затем выйдите из Excel:

Sub Ukonci30sec()
Application.OnTime Now + TimeValue(«00:00:30»), «MyEnd»
End Sub

Sub MyEnd()
Application.DisplayAlerts = False
Application.Quit
End Sub

Иди туда

Добавлено: 18.03.11 21:38

Здравствуйте, к сожалению, я скопировал это в базовую версию, и после тридцати минут бездействия в Excel ничего не произошло. поэтому я не вижу, в чем проблема.

Павел Ласбак

Добавлено: 19.03.11 13:16

Читайте также:  Как сказать windows 7

Оттуда: Необходимо запустить макрос End30sec. В качестве альтернативы, чтобы убедиться, что он запускается автоматически при запуске MS Excel, см. эту статью. например, MsgBox «office.lasakovi.com» заменяет Application.OnTime Now + TimeValue(«00:00:30»), «MujNec»

Иди туда

Добавлено: 20.03.11 05:34

Здравствуйте, спасибо за совет. Это именно то, к чему я стремился. Только теперь Excel сообщает мне, когда автоматически запускается первый макрос — макрос MujKonec не может быть найден. При этом я правильно ввел обе команды в бейсик. Спасибо

Павел Ласбак

Добавлено: 20.03.11 10:02

Что там: У вас MyEnd в «Module1», т.е. при просмотре макросов вы должны видеть макрос «MyEnd», а не «ThisWorkbook.MyEnd»

Павел Ласбак

Добавлено: 20.03.11 10:15

Это здесь: образец http://www.uloz.to/8356028/ukonci-excel-xlsm

Иди туда

Добавлено: 20.03.11 20:38

Спасибо за пример. Я бы попросил только 97-ми версию. Я не могу открыть XLSM.

Павел Ласбак

Добавлено: 22.03.11 19:01

Ондшей: так же и в версии 97. http://www.uloz.to/8388545/ukonci-excel-xls

фугиск

Добавлено: 01.08.12 16:14

Также можно использовать макросы

: Sub auto_open() . Подпрограмма auto_close() .

Павел Ласбак

Добавлено: 01.09.12 20:05

Фугисту: Это правда, но Auto_Open запускается только тогда, когда рабочая книга открывается вручную, с Workbook_Open она работает, даже если я запускаю ее, используя код из другой рабочей книги.

Карел

Добавлено: 21.01.12 11:25

Здравствуйте, у меня обратная проблема. Как убедиться, что рабочая книга, которая автоматически запускает макросэтот макрос не запускался, когда я открывал его с помощью кода из другой книги с помощью команды Workbooks.Open Filename:=»xxx» Спасибо за совет.

Павел Ласбак

Добавлено: 21.01.12 14:31

Для Карела: Используйте команду Auto_Open, вставьте в модуль Sub Auto_Open() MsgBox «run by default» End Sub

Осталось

Добавлено: 23.02.12 11:00

Я мог бы попросить совета, я не могу написать макрос, который будет вставлять текст в ячейку, если определенный текст вставлен в другую ячейку. Если Ai = «Условие», то Bi = «вставленный текст», чтобы макрос выполнялся постоянно и для всех строк. Таким образом, всякий раз, когда кто-то вставлял текст «Условие» в любую строку столбца A, в той же строке столбца B говорилось «текст вставлен. Большое спасибо».

Павел Ласбак

Добавлено: 24.02.12 18:05

К Збынмеку: Должен реагировать на событие изменения листа, см. http://office.lasakovi.com/excel/vba/vlastnosti-metody-udalosti-kolekce-excel-vba/.

Павел Ласбак

Добавлено: 03.06.12 14:41

Запустите скрипт в другой книге: Application.Run «jiny.xlsm!MyMacro»

Питер Дж

Добавлено: 21.11.12 11:15

Добрый день, большое спасибо за этого помощника, он сэкономил мне нервы, потому что некоторые мои коллеги держат свои файлы открытыми, а другие не могут получить к ним доступ. Я просто хотел спросить, можно ли модифицировать код так, чтобы он включался в момент окончания активности, когда рассматриваемый человек начинает работать в другом файле или отходит от компьютера. Таким образом, он отключается через определенное время после включения файла, который мы никогда не знаем, сколько времени это будет :(. Большое спасибо! Петр

Павел Ласбак

Добавлено: 21.11.12 15:56

Петру Д.: Что подразумевается под окончанием занятия? Закончили запись по формуле?

Питер Дж

Добавлено: 22.11.12 08:02

момент, когда последнее нажатие клавиши в данном сеансе, а затем человек переходит либо к другому файлу, либо к другому приложению.

Павел Ласбак

Добавлено: 22.11.12 16:26

Этот Петр Дж.: может быть, вам поможет статья на ozgrid.com: http://www.ozgrid.com/forum/showthread.php?t=32949

Питер Дж

Добавлено: 22.11.12 16:44

Это Павел Ласак: это именно то, что я искал, большое спасибо за это, только не дайте мне закрыть, первая часть начнется, но она никогда не закроется. Я поместил первый в книгу, а остальные три в модуль. Это правильно? или все трое должны быть вместе? Я не очень понимаю их, поэтому я не уверен. Большое спасибо. Питер

Джордж

Добавлено: 01.09.13 08:30

Здравствуйте, хотелось бы совета. Я настроил Excel на автоматическое закрытие через определенное время в соответствии с сообщениями выше. Это работает, но мне понадобится только рабочая книга, в которую я поместил макрос, чтобы закрыть ее, а остальные оставить открытыми. Теперь все мои открытые книги закрываются по истечении установленного времени. Спасибо за совет.

Павел Ласбак

Добавлено: 01.09.13 16:18

Читайте также:  Как вернуть скрытые значки на панели задач windows 10

To Jirka: Закрытие активной книги: ActiveWorkbook.Close Если необходимо сохранить перед закрытием: ActiveWorkbook.Close True Закрыть данный файл (указано). Рабочая книга, отличная от той, в которой должен быть закрыт макрос, может быть активной. Книги(«Файл.xls»). Закрыть

Джордж

Добавлено: 01.09.13 16:52

Это Павел Ласбк: Спасибо за быстрый ответ, но я не очень хорошо себя чувствую. У меня есть книга «Список», из которой я открываю другие книги по гиперссылкам. В книге «Список» у меня есть макрос Private Sub Workbook_Open() Application.OnTime Now + TimeValue («00:01:30»), «End» End Sub Sub End() Application.DisplayAlerts = False Application.Quit End Sub По истечении указанного времени все открытые книги будут закрыты. Мне нужно, чтобы книга «Список» была закрыта.Попытался войти в книги(«List.xls») по вашему совету.Закрыть, но все равно все закрыто. Я где-то ошибся, но не могу понять где.

Джордж

Добавлено:09.01.13 17:29

Прошу прощения за то, что перепутал

Павел Ласбак

Добавлено: 01.09.13 22:44

Для Jirka: Application.Quit закрывает все (т.е. выходит из Excel). Я помещаю это в свой список дел и пытаюсь написать статью.

Джордж

Добавлено: 01.09.13 23:15

Большое спасибо за ваше время

Джордж

Добавлено: 10.01.13 07:54

To Pavel Lasbek: По вашему совету я написал Workbooks(«Workbook name.xlsm»).Close вместо Application.Quit и все работает как мне нужно. Еще раз спасибо за ваше терпение со стариком.

Павел Ласбак

Добавлено: 10.01.13 16:20

Йирке: Рад, что это случилось, рад, что это работает.

Венок

Добавлено: 03.08.13 18:18

Здравствуйте, у меня небольшая проблема с Visual Basic. Я хочу, чтобы после завершения установки на индикаторе выполнения появлялось текстовое окно и заполнялась форма 1. Заранее спасибо.

Добавлено: 07.02.14 12:23

Прошу помощи со следующей проблемой: в ячейках А1, А2, А3 у меня есть формулы, которые оцениваются и на основе оценки я определяю какое-то значение, которое будет заполнено в ячейке, в которой находится формула. То есть вычисляется формула в А1 и значение такое, как написано в А1. 1, но если он оценивается как A1=»», тогда мне нужно сократить всю строку 1. То же, аналогично, для А2, А3. Если будет работать только с тем, что макрос будет следить за значением ячейки А1, А2, А3 и в случае значения А1=»» скрывать строку 1, то мне этого достаточно, но если он должен реагировать к прямому изменению ячейки (типа в ячейке я вручную меняю значение), так оно будет происходить только в ячейке формулы!B1 все остальное связано с формулой. Я надеюсь, что есть кто-то, готовый помочь.

Понтиак

Добавлено: 16.07.14 14:00

Здравствуйте, у меня к вам просьба. Некоторое время назад я создал довольно объемный файл Excel, и теперь мне нужно окно синформация о том, кто создал этот файл и как с ним связаться. Вы можете довольно хорошо ориентироваться в поле формулы, но макросы и VBA мне все еще неизвестны. Поэтому я прошу вашей помощи. Я понимаю.

Павел Ласбак

Добавлено: 16.07.14 18:49

To Poncijak: Как указано в статье, после запуска отобразить диалоговое окно: Private Sub Workbook_Open() MsgBox «Автор: Павел Ласбак http://office.lasakovi.com» End Sub Я писал больше о диалоговом окне в статье: VBA — msgbox — диалоговое окно

Понтиак

Добавлено: 24.07.14 07:18

Здравствуйте, спасибо за ваш ответ. Я боролся с термином «ThisWorkbook», но после нескольких неудач я создал то, что мне было нужно. Но у меня есть еще один вопрос. Можно ли вставить пользовательское изображение или фотографию в это всплывающее окно? Я понимаю.

Понтиак

Добавлено: 24.07.14 07:44

Здравствуйте, проблема решена. Я использовал Dialog, и появилось окно с текстом и изображением. Большое спасибо за вашу помощь и этот сайт.

Джон К.,

Добавлено: 19.01.15 09:15

Здравствуйте, хотелось бы спросить, есть ли аналогичная функция при закрытии книги. Что-то вроде «Auto_close»? Я хочу сказать, что мне нужно создать проверку того, что определенные ячейки не пусты. Созданный макрос не проблема, мне важно, как его быстро запустить, чтобы он использовался, например, при сохранении или закрытии книги. Спасибо за тип.

Добавлено: 22.01.15 07:45

Читайте также:  Как убрать напоминание обновления до windows 10

To Honza K: Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub ИЛИ Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub

Добавлено: 22.01.15 10:24

Спасибо, просто хочу написать, что «погуглил» второй вариант :-). Я тоже попробую первый.

Ондра

Добавлено: 06.02.15 08:22

Привет, Павел, заранее спасибо за этот замечательный сайт. У меня к вам вопрос, мне нужно изменить формулы в ячейках (B1-B5) вв зависимости от значения ячейки (A1) формула изменяется сразу же при изменении значения. На сайте майкрософта нашел следующую инструкцию, пока все не понятно смотрите по ссылке http://support.microsoft.com/kb/213612/en-us Проблема возникает когда лист, например «abc», создается автоматически используя другой макрос. Чтобы следующая процедура работала, код из руководства должен быть вставлен в лист модуля «abc», поэтому мне нужна процедура для вставки кода непосредственно в лист «abc» во время создания. Значение ячеек листов(«abc»).range(«A1») не влияет на ячейки на других листах. Поп. можно ли устроить проще? Спасибо за ответ

острый

Добавлено: 19.02.15 16:00

Добрый день. Столкнулся со страшной для меня проблемой, я дилетант, но дело в том, что у нас есть одна таблица, созданная Google Excel, потому что к ней относится формула, это просто такая база данных с информацией. Не подскажете, как открыть с помощью макроса или гипертекста, хотелось бы вставить в макрос и потом выполнять другие действия.Таблица открывается бесчисленное количество раз в день. Спасибо за любую помощь или совет

Добавлено: 27.02.15 14:50

Например, у меня есть макрос. Под Скрыть. Следовательно, я хочу, чтобы он запускался после открытия книги, но у меня это не работает, т.е. не запускается после открытия книги. Оба хранятся в одном и том же модуле. Звонок тоже не помогает. Когда я прямо в редакторе и вручную запускаю макрос, он работает. Спасибо за совет. Private Sub Workbook_Open() Application.Run «Hide» End sub

Бродский

Добавлено: 01.05.16 16:29

Я хотел бы связать ряд xlsm-файлов, каждый раз, когда один выходит, он вызывает следующий, но мне нужно, чтобы вызывающий объект был закрыт. Если я использую RUN, макрос всегда останавливается после закрытия файла. Я пробовал: В файле A.xlsm есть это: Sub auto_open() MsgBox «auto_open()» End Sub Private Sub Workbook_Open() MsgBox «Workbook_Open()» End SubЕсли я нажму вручную, то он напишет auto_open(). Если я открываю из другого файла командой workbook.open(«path &A.xlsm»), то файл A открывается, но макрос не запускается — ничего не пишется! Как это сделать? Спасибо

Добавлено: 13.05.16 07:51

Здравствуйте, прежде всего я хотел бы поблагодарить вас за подробные инструкции. Мне нужно было бы сделать что-то простое, но довольно сложное, и я не знаю, удастся ли это сделать вообще. Дело в том, что у меня есть надстройка в Excel для другого приложения (которая не редактируется, а является прямой dll-библиотекой), которая создает таблицу в Excel, в которой я меняю/добавляю строки, и она реимпортируется из эту таблицу в данную программу. Это все работает лучше. Мне просто нужно сделать небольшую вещь, чтобы столбцы автоматически подстраивались под размер текста внутри, потому что этот плагин оставляет столбцы излишне очень широкими. Проблема в том, что после запуска надстройки открывается совершенно новое окно, поэтому не получается подготовить xlsm файл, пробовал активировать данное новое окно, что удалось, но последующая настройка столбца не производилась в этом активном окне, но в исходном, из которого был запущен макрос. Можно ли это решить? Надеюсь, вы понимаете, о чем идет речь. Я знаю, как настроить столбцы, вопрос лишь в том, как это сделать в другой несохраненной новой книге, которая будет создана с помощью этого дополнения. Я понимаю.

Мартин

Добавлено: 23.08.16 17:59

Здравствуйте! Отличный сайт. У меня есть вопрос. У меня есть существующий макрос, который генерирует другую таблицу с обзорами из таблицы при нажатии кнопки. Проблема в том, что данные не обновляются во вновь созданной таблице. Нужно ли что-то запускать, чтобы обновить данные, или там автоматическое обновление не работает? спасибо

Поделиться с друзьями
ОС советы