Excel запуск макроса при закрытии

 

Требуется запускать макрос при каждом закрытии книги.  
Как альтернатива при ее сохранении.  
Что и как необходимо сделать?  
(если можно алгоритм действий)  

  Сам макрос:  

  Sub Макрос6()  
‘  
‘ Макрос6 Макрос  
‘ Макрос записан 23.08.2010 (Nikolay)  
‘  

  ‘  
   Sheets(«Лист1»).Select  
   Range(«D70:I84»).Select  
   Selection.Copy  
   Sheets(«Архив»).Select  
   Cells.Find(What:=»666666″, After:=ActiveCell, LookIn:=xlValues, LookAt _  
       :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _  
       False, SearchFormat:=False).Activate  
   ActiveCell.Offset(0, 2).Range(«A1»).Select  
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
       :=False, Transpose:=False  
   Sheets(«Объекты (2)»).Select  
   ActiveCell.Range(«A1:C1»).Select  
End Sub

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

В модуль книги:  
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
‘ Макрос записан 23.08.2010 (Nikolay)  
Sheets(«Лист1»).Range(«D70:I84»).Copy  
Sheets(«Архив»).Select  
Cells.Find(What:=»666666″, After:=ActiveCell, LookIn:=xlValues, LookAt _  
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _  
False, SearchFormat:=False).Activate  
ActiveCell.Offset(0, 2).Range(«A1»).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
:=False, Transpose:=False  
Sheets(«Объекты (2)»).Select  
ActiveCell.Range(«A1:C1»).Select  
End Sub

Я сам — дурнее всякого примера! …

 

Можно немного оптимизировать макрос:  

  Private Sub Workbook_BeforeClose(Cancel As Boolean)  
   Макрос6  
End Sub  

  Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
   Макрос6  
End Sub  

  Sub Макрос6()  
   Dim ЯчейкаДляВставки As Range  
   Set ЯчейкаДляВставки = Sheets(«Архив»).UsedRange.Find(What:=»666666″).Offset(, 2)  
   Sheets(«Лист1»).Range(«D70:I84»).Copy ЯчейкаДляВставки  
End Sub  

    Вставьте весь этот код в модуль книги.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Игорь, автору надо вставлять значения. А просто Copy вставит все. А дальше он активирует Sheets(«Объекты (2)») с выделением диапазона(не знаю зачем, но мож так надо)… Я не стал трогать.

Я сам — дурнее всякого примера! …

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

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
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

nik105, Вы бы правила почитали по поводу размера файла. И еще. Очень не понравилось, сто Вы подписались моим ником в последнем сообщении. Ваш файл модеры удалят. Поэтому потрудитесь выложить тот же файл сжатый раром или зипом. И подпишитесь своим ником.  
С ув. Сергей.

Я сам — дурнее всякого примера! …

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

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 (Код) окно.
код запуска документа при открытии или закрытии 1

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

3. Затем скопируйте свой собственный код без первой и последней строки и вставьте между Private Sub Workbook_Open() и End Sub как показано ниже.
код запуска документа при открытии или закрытии 3

4. Затем нажмите Сохраните кнопку, чтобы сохранить код, в появившемся диалоговом окне напоминания нажмите Нет.
код запуска документа при открытии или закрытии 4

5 Тогда Сохранить как появится диалоговое окно, сохраните файл как Excel Macro-Enabled Workbook и выберите папку для размещения файла.
код запуска документа при открытии или закрытии 5

6. Нажмите Сохраните кнопка. Теперь код будет работать, пока рабочая книга открыта.

Если вы хотите запускать код при закрытии книги каждый раз, выберите Деактивировать из правого раскрывающегося списка в Code окно и скопируйте код, который вы будете запускать, и вставьте между Private Sub Workbook_Deactivate() и End Sub.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка 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. Image titled 12334186 1

    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. Image titled 12334186 2

    2

    Click the Developer tab and select Visual Basic.

    Advertisement

  3. Image titled 12334186 3

    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. Image titled 12334186 4

    4

    Enter the following code:

    Private Sub Workbook_Open()
    
     Put your Macro-code here
    
    End Sub
    
  5. Image titled 12334186 5

    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]
  6. Advertisement

  1. Image titled 12334186 6

    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. Image titled 12334186 7

    2

    Click Record Macro. It’s in the «Developer» tab in the «Code» grouping.

  3. Image titled 12334186 8

    3

    Enter your macro name. Name it something like «Auto_Open» so you can read the title and know what it does.

  4. Image titled 12334186 9

    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. Image titled 12334186 10

    5

    Click Ok. That window will close and every keystroke or button press will be recorded in the macro.

  6. Image titled 12334186 11

    6

    Click the File and click Open. Your file manager will open.

  7. Image titled 12334186 12

    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. Image titled 12334186 13

    8

    Click Stop Recording. All the keystrokes and button presses you made are recorded and stored in the macro.

  9. Image titled 12334186 14

    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.

  10. 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 обычно предупреждает пользователей, которые пытаются закрыть не сохраненную книгу, давая им возможность сохранить перед закрытием. Тем не менее, многие пользователи могут пропустить это предупреждение, случайно нажать кнопку «Нет».

С этим макросом Вы защитите свой файл от невнимательных пользователей.

Содержание

  1. Как это работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как это работает

Этот код запускается событием рабочей книги (BeforeClose- перед закрытием). При нажатии на кнопку Закрыть срабатывает событие и запускается макрос. Суть кода проста — он запрашивает у пользователя, действительно ли он хочет закрыть книгу

Как сохранить файл в Excel перед закрытием

Макрос затем проверяет какую кнопку нажал пользователь ОК или Отмена. Оценка производится с помощью конструкции 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. На шаге 1 мы активируем окно c сообщением, где в качестве проверки используем оператор Select Case. Здесь мы используем аргумент vbOKCancel, чтобы на формочке отображались кнопки ОК и Отмена.
  2. Если пользователь нажал кнопку Отмена в окне сообщения, макрос говорит Excel: «Не выходим! Закрой событие!». Это делается путем присвоения переменной Cancel свойства True
    (Верно). Если пользователь нажал кнопку OK в окне сообщений, п. 3 вступает в силу.
  3. Здесь мы говорим Excel: «Сохранить книгу!». Здесь мы не пишем Cancel = True, поэтому событие успешно завершается.
  4. На шаге 4, мы просто закрываем Оператор Select Case.

Как использовать

Для реализации этого макроса, Вам нужно скопировать и вставить его в код события Workbook_BeforeClose. Размещение макроса здесь позволяет запускать макрос непосредственно перед закрытием excel-файла.

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы и модуль ЭтаКнига.
  3. Правой кнопкой мыши нажмите на модуле ЭтаКнига и выберите View Code.
  4. В левой части окна выберите объект WorkBook (Excel автоматом предложит написать макрос для события Workbook_Open (можете позже удалить его за ненадобностью)
  5. В правом выпадающем списке свойство 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

  • Макрос, выполняемый перед закрытием книги

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel запуск макроса по нажатию кнопки
  • Excel запуск без надстроек
  • Excel запросы к файлам
  • Excel запросы sql с параметрами
  • Excel запросы sql примеры

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии