|
Требуется запускать макрос при каждом закрытии книги. Сам макрос: Sub Макрос6() ‘ |
|
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
В модуль книги: Я сам — дурнее всякого примера! … |
|
Можно немного оптимизировать макрос: Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sub Макрос6() Вставьте весь этот код в модуль книги. |
|
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Игорь, автору надо вставлять значения. А просто Copy вставит все. А дальше он активирует Sheets(«Объекты (2)») с выделением диапазона(не знаю зачем, но мож так надо)… Я не стал трогать. Я сам — дурнее всякого примера! … |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Спасибо за участие. Но что то не выходит :(. Если не сложно прошу помочь вставить макрос в книгу.Sub Макрос1()<BR>'<BR>’ Макрос1 Макрос<BR>’ Макрос записан 23.08.2010 (Nikolay)<BR>’ ‘<BR> Sheets(«Лист1»).Select<BR> Range(«D70:I84»).Select<BR> Selection.Copy<BR> Sheets(«Архив»).Select<BR> Range(«A2″).Select<BR> Cells.Find(What:=»666666», After:=ActiveCell, LookIn:=xlValues, LookAt _<BR> :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _<BR> False, SearchFormat:=False).Activate<BR> ActiveCell.Offset(0, 2).Range(«A1»).Select<BR> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _<BR> :=False, Transpose:=False<BR> ActiveCell.Offset(-32, -2).Range(«A1»).Select<BR> Sheets(«Объекты»).Select<BR> ActiveCell.Range(«A1:C1»).Select<BR>End Sub <BR><STRONG>Файл удален</STRONG> — велик размер. [Модераторы] Я сам — дурнее всякого примера! … |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
nik105, Вы бы правила почитали по поводу размера файла. И еще. Очень не понравилось, сто Вы подписались моим ником в последнем сообщении. Ваш файл модеры удалят. Поэтому потрудитесь выложить тот же файл сжатый раром или зипом. И подпишитесь своим ником. Я сам — дурнее всякого примера! … |
|
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Я уже писал:»В модуль книги:». А Вы в общий модуль вставили. Понимаю, с ВБА туго. Я сам — дурнее всякого примера! … |
|
nik105 Гость |
#8 25.08.2010 02:03:30 Здравствуйте, Сергей. С уважением, Николай. |
Во многих случаях мы можем использовать код VBA для выполнения операций, которые встроенные функции Excel не поддерживают. Но пробовали ли вы когда-нибудь запускать макрос VBA при каждом открытии или закрытии книги? В этой статье я расскажу вам, как запускать код VBA при каждом открытии или закрытии книги.
Запускать код VBA при закрытии или открытии книги
Запускать код VBA при закрытии или открытии книги
1. Включите книгу, нажмите Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Двойной клик ThisWorkbook в проекте — VBAProject панель, чтобы открыть ThisWorkbook (Код) окно.
2. В окне кода выберите Workbook из раскрывающегося списка слева. Обратите внимание, что по умолчанию Откройте будет отображаться в правом раскрывающемся списке, если нет, измените его на Откройте.
3. Затем скопируйте свой собственный код без первой и последней строки и вставьте между Private Sub Workbook_Open() и End Sub как показано ниже.
4. Затем нажмите Сохраните кнопку, чтобы сохранить код, в появившемся диалоговом окне напоминания нажмите Нет.
5 Тогда Сохранить как появится диалоговое окно, сохраните файл как Excel Macro-Enabled Workbook и выберите папку для размещения файла.
6. Нажмите Сохраните кнопка. Теперь код будет работать, пока рабочая книга открыта.
Если вы хотите запускать код при закрытии книги каждый раз, выберите Деактивировать из правого раскрывающегося списка в Code окно и скопируйте код, который вы будете запускать, и вставьте между Private Sub Workbook_Deactivate() и End Sub.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (1)
Оценок пока нет. Оцените первым!
Download Article
Download Article
This wikiHow will teach you how to run macros in Excel automatically when you open a specific workbook, or how to create a macro that opens all your workbooks when you open Excel. Before you start, make sure you have the developer tab showing on the editing ribbon.
-
1
Make sure the Developer tab is displayed on your editing ribbon. If it isn’t and you’re using a Windows computer, go to the File tab and click Options > Customize ribbon. Under «Main tabs» check the box next to «Developer.»
- If you’re using a Mac, you’ll be able to enable the developer tab by going to Excel > Preferences (the menu at the top of your screen) then clicking Ribbon & Toolbar. In the «Customize the Ribbon» category, click the «Developer» checkbox and click Save.
-
2
Click the Developer tab and select Visual Basic.
Advertisement
-
3
Double-click your workbook from the panel on the left. You’ll see it listed under «VBA Project,» but if you don’t see it, click to expand the «VBA Project» folder.
-
4
Enter the following code:
Private Sub Workbook_Open() Put your Macro-code here End Sub
-
5
Close the Visual Basic Editor. You don’t have to click save or anything before closing the editor.
- The next time you open this workbook, the macro code you entered between the sub and end sub lines will run.[1]
- The next time you open this workbook, the macro code you entered between the sub and end sub lines will run.[1]
Advertisement
-
1
Make sure the Developer tab is displayed on your editing ribbon. If it isn’t and you’re using a Windows computer, go to the File tab and click Options > Customize ribbon. Under «Main tabs» check the box next to «Developer.»
- If you’re using a Mac, you’ll be able to enable the developer tab by going to Excel > Preferences (the menu at the top of your screen) then clicking Ribbon & Toolbar. In the «Customize the Ribbon» category, click the «Developer» checkbox and click Save.
- This macro will open all the worksheets you want to open when you launch Excel, which is highly useful if you work on a few different projects each day.
-
2
Click Record Macro. It’s in the «Developer» tab in the «Code» grouping.
-
3
Enter your macro name. Name it something like «Auto_Open» so you can read the title and know what it does.
-
4
Click Personal Macro Workbook. You’ll see this in the «Store macro in» box and will make the macro available every time you open Excel.
- You can fill out the description to remind you specifically of what this macro does.
-
5
Click Ok. That window will close and every keystroke or button press will be recorded in the macro.
-
6
Click the File and click Open. Your file manager will open.
-
7
Select all the workbooks you want to open when you open Excel. If you need to select files in different locations, hold down Shift and click them.
-
8
Click Stop Recording. All the keystrokes and button presses you made are recorded and stored in the macro.
-
9
Close Excel. You’ll be prompted to save the changes you’ve made, so click Yes and your macro will open all those workbooks whenever you restart Excel.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Thanks for submitting a tip for review!
References
About This Article
Article SummaryX
1. Make sure the Developer tab is displayed on your editing ribbon.
2. Open VBA.
3. Double-click your workbook from the panel on the left.
4. Enter the displayed code.
5. Close the Visual Basic Editor.
Did this summary help you?
Thanks to all authors for creating a page that has been read 10,072 times.
Is this article up to date?
Skip to content
На чтение 3 мин. Просмотров 2.9k.
Что делает макрос: Этот макрос защищает от случайного закрытия файла перед сохранением. Он гарантирует, что Excel автоматически сохранит файл перед закрытием.
Excel обычно предупреждает пользователей, которые пытаются закрыть не сохраненную книгу, давая им возможность сохранить перед закрытием. Тем не менее, многие пользователи могут пропустить это предупреждение, случайно нажать кнопку «Нет».
С этим макросом Вы защитите свой файл от невнимательных пользователей.
Содержание
- Как это работает
- Код макроса
- Как работает этот код
- Как использовать
Как это работает
Этот код запускается событием рабочей книги (BeforeClose- перед закрытием). При нажатии на кнопку Закрыть срабатывает событие и запускается макрос. Суть кода проста — он запрашивает у пользователя, действительно ли он хочет закрыть книгу
Макрос затем проверяет какую кнопку нажал пользователь ОК или Отмена. Оценка производится с помощью конструкции Select Case. Оператор Select Case является альтернативой в If … Then … Else, что позволяет выполнять проверки условий ваших макросов (обычно используется для большого количества условий).
Код макроса
Private Sub Workbook_BeforeClose(Cancel
As Boolean)Выведем сообщение с "ОК" или "Отмена"
Select Case MsgBox("Сохранить и закрыть?",vbOKCancel)
'Если нажал "Отмена", закрываем окно
Case Is = vbCancel
Cancel=True
'Если нажал "Да", то сохраняем книгу
Case Is=vbOK
ActiveWorkbook.Save
'Завершаем проверку, закрываем Select Case
End Select
End Sub
Как работает этот код
Давайте подробно рассмотрим каждую строчку кода
- На шаге 1 мы активируем окно c сообщением, где в качестве проверки используем оператор Select Case. Здесь мы используем аргумент vbOKCancel, чтобы на формочке отображались кнопки ОК и Отмена.
- Если пользователь нажал кнопку Отмена в окне сообщения, макрос говорит Excel: «Не выходим! Закрой событие!». Это делается путем присвоения переменной Cancel свойства True
(Верно). Если пользователь нажал кнопку OK в окне сообщений, п. 3 вступает в силу. - Здесь мы говорим Excel: «Сохранить книгу!». Здесь мы не пишем Cancel = True, поэтому событие успешно завершается.
- На шаге 4, мы просто закрываем Оператор Select Case.
Как использовать
Для реализации этого макроса, Вам нужно скопировать и вставить его в код события Workbook_BeforeClose. Размещение макроса здесь позволяет запускать макрос непосредственно перед закрытием excel-файла.
- Активируйте редактор Visual Basic, нажав ALT + F11.
- В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы и модуль ЭтаКнига.
- Правой кнопкой мыши нажмите на модуле ЭтаКнига и выберите View Code.
- В левой части окна выберите объект WorkBook (Excel автоматом предложит написать макрос для события Workbook_Open (можете позже удалить его за ненадобностью)
- В правом выпадающем списке свойство BeforeClose
Макрос, выполняемый перед закрытием книги
Автор Rayz8, 25.02.2010, 09:38
« назад — далее »
Здравствуйте, гуру!
Нужен Ваш совет по коду, который будет выполняется, когда пользователь закроет книгу и подтвердит сохранение изменений. Т.е. в момент между подтверждением о сохранении и закрытием Excel’я, при этом перед закрытием изменения должны сохраниться, конечно.
Сначала, я попробовал так:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Cancel = True Then
...
End If
End Sub
но при этом Excel выводит вопос о сохранении, затем выполняется макрос и снова вопрос о сохранении, что недопустимо.
А вот этот код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not Cancel = True Then
...
End If
End Sub
работает как надо, если бы не одно «но»: если во время работы с книгой выполнить сохранение, то макрос тоже срабатывает. Как этого избежать?
Спасибо.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
‘ ваш код
Application.DisplayAlerts = False
ThisWorkbook.Save
End Sub
Dolphin, благодарю за ответ, но вопрос остался открытым:
Перед закрытием пользователь должен видеть стандартный вопрос Excel’я о сохранении изменений.
тогда проблема не в том коде который вы предоставили
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Макрос, выполняемый перед закрытием книги








