Макрос при закрытии книги 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

Здравствуйте, Сергей.  
Большое спасибо за помощь.  
Прошу прощения, что подписался Вашим именем, хотел отправить личное сообщение    
(не много не разобрался, а исправить не сумел).  
Впредь буду внимательнее.  

  С уважением, Николай.

How to close an Excel workbook using VBA and macros, including how to save the file before you close it or discard any changes.

Sections:

Selecting Which Workbook to Close

Close Workbook While Saving Changes

Close Workbook Without Saving Changes

Let the User Decide to Save Changes or Not

Notes

Selecting Which Workbook to Close

First, we need to tell the macro to choose the current workbook to close or another workbook to close.

Current Workbook

We use this piece of code to close the current or currently active workbook and close that.

Other Workbook

We use this piece of code to close any specific open workbook.

Workbooks("test.xlsx").Close

Replace test.xlsx with the name of the file that you want to close.

Close Workbook While Saving Changes

To have Excel automatically save any changes for the workbook that you want to close, just put True behind the close workbook code from above like this:

ActiveWorkbook.Close True

or, to close a specific file like this:

Workbooks("test.xlsx").Close True

Close Workbook Without Saving Changes

To have an Excel window close WITHOUT saving any changes, just put False behind the close workbook code from above like this:

ActiveWorkbook.Close False

or, to close a specific file like this:

Workbooks("test.xlsx").Close False

Let the User Decide to Save Changes or Not

You use the basic code from the first section and don’t include a True or False after it and a dialog box will open asking if you want to save the file or not; it looks like this:

Close the currently active or visible workbook:

Close a specific workbook:

Workbooks("test.xlsx").Close

Notes

You may run into issues with messages popping up depending on your implementation of this code and your setup and it can help to turn off ScreenUpdating for Excel. Make sure to turn it back on when you are finished though.

If Application.DisplayAlerts is set to False before you close the workbook, you won’t see a popup asking if you want to save it or not before closing it. If this is the case, you may lose data if you wanted to save the file before closing it, so test your code on a sample workbook first.

Download the sample files for this tutorial to test everything out.

Similar Content on TeachExcel

Open Excel Workbook Using VBA Macros

Tutorial:
Simple way to open an Excel workbook using VBA and macros.

Syntax

Workbooks.Open («File…

Macro to get Data from Another Workbook in Excel

Tutorial:
Macro to get data from a workbook, closed or open, over a network or locally on your comp…

Get User Submitted Data from a Prompt in Excel using VBA Macros

Tutorial: How to prompt a user for their input in Excel.
There is a simple way to do this using VBA …

Interactive Clickable Buttons and Interface Without Using VBA/Macros in Excel

Tutorial:
How to make your Excel dashboards and worksheets more interactive and easier to view and …

Loop through a Range of Cells in Excel VBA/Macros

Tutorial: How to use VBA/Macros to iterate through each cell in a range, either a row, a column, or …

Kill Command in Excel (Delete Files Using VBA)

Tutorial:
How to safely remove, delete, kill any Excel file, or other file, using VBA Macros in Exc…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Во многих случаях мы можем использовать код 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)


Оценок пока нет. Оцените первым!

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

Автор 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

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

powerking11

1 / 1 / 0

Регистрация: 28.04.2016

Сообщений: 103

1

Автосохранение книги при закрытии

18.12.2020, 15:49. Показов 3096. Ответов 4

Метки vba access, vba excel (Все метки)


Студворк — интернет-сервис помощи студентам

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

Visual Basic
1
2
3
Sub AutoClose()
  If ActiveDocument.Saved = False Then ActiveDocument.Save
End Sub

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



0



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

18.12.2020, 16:20

2

WORD или Excel или еще где? Чтобы макрос работал его нужно вешать на событие закрытия книги.
в эксель

Visual Basic
1
Private Sub Workbook_BeforeClose(Cancel As Boolean)

в ворд

Visual Basic
1
Private Sub Document_Close()



0



Kubuntovod

Эксперт NIX

2670 / 786 / 176

Регистрация: 14.01.2013

Сообщений: 3,676

18.12.2020, 17:29

3

Visual Basic
1
Documents.Save NoPrompt:=True, OriginalFormat:=wdOriginalDocumentFormat

Оно?



0



Igor_61

89 / 49 / 18

Регистрация: 03.06.2019

Сообщений: 187

19.12.2020, 18:10

4

Цитата
Сообщение от powerking11
Посмотреть сообщение

что бы при закрытии книги, не выдавало окно с вопросом сохранения, а сохраняло сразу

В Excel:

Visual Basic
1
2
3
Application.DisplayAlerts = False
        ThisWorkbook.Save
        Application.DisplayAlerts = True



1



powerking11

1 / 1 / 0

Регистрация: 28.04.2016

Сообщений: 103

21.12.2020, 14:32

 [ТС]

5

Igor_61, спасибо работает

Добавлено через 3 минуты
Igor_61,

PureBasic
1
2
3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Save ' принудительное сохранение перед закрытием
End Sub

Но лучше так



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

21.12.2020, 14:32

Помогаю со студенческими работами здесь

При закрытии одной книги записать информацию во вторую
Всем привет) столкнулся с проблемой: есть две книги в одну заношу информацию, и во вторую заношу…

Excel При закрытии книги VB проект остается не выгруженным
В Excel на VBA написал проект, однако при закрытии книги этот проект почему-то остается не…

Как при закрытии книги эксель — убрать иконку
Добрый вечер.
Помогите решить вопрос.

При открытии файл эксель подгружает иконку (.ico) по…

Сделать так, чтобы при закрытии книги удалялась кнопка
Добрый день!

Вопрос, наверное, простой, но я с ним промучалась уже два дня. Как программно…

Запуск макроса при закрытии любой активной рабочей книги
Есть макрос, в книге макросов, но как его запустить при закрытии любой активной рабочей книги?…

Сохранение книги Excel в другом месте при закрытии файла
Здравствуйте, помогите макросом: на съемном носителе, который открывается с разных машин есть книга…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

5

Понравилась статья? Поделить с друзьями:
  • Макрос переключения листов в excel
  • Макрос при загрузке excel
  • Макрос переименовывающий листы excel
  • Макрос после сохранения excel
  • Макрос перед закрытием excel