Excel макрос закрыть книгу с сохранением

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!

закрытие екселя с сохранением и без предупреждения

85Muslim85

Дата: Суббота, 21.03.2015, 14:08 |
Сообщение № 1

Группа: Заблокированные

Ранг: Участник

Сообщений: 60


Репутация:

-23

±

Замечаний:
80% ±


Excel 2007

добрый день, скажите как закрыть ексель (полностью выйти) с сохранением под таким же названием и без предупреждения
скажите что в этом коде не так((((

[vba]

Код

Sub вава()
Range(«A1») = 1
Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.SaveAs («rl.xlsm»)
Workbooks.Close
End Sub

[/vba]

Сообщение отредактировал 85Muslim85Суббота, 21.03.2015, 16:26

 

Ответить

KSV

Дата: Суббота, 21.03.2015, 14:29 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 770


Репутация:

255

±

Замечаний:
0% ±


Excel 2013

все правильно

[vba]

Код

‘ подавляет предупреждения Excel
Workbooks.Application.DisplayAlerts = False

‘ сохраняет книгу в файл С ДРУГИМ именем
Excel.ActiveWorkbook.SaveAs («rl.xlsm»)

‘ сохраняет книгу в файл С ТЕМ ЖЕ именем
Excel.ActiveWorkbook.Save

‘ закрывает книгу
Workbooks.Close

‘ закрыть с сохранением (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close True

‘ закрыть без сохранения (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close False

‘ закрыть Excel (закроется только если в этом же Application больше нет открытых и не сохраненных книг,
‘ иначе будет запрашивать подтверждения сохранения, при .DisplayAlerts = True)
Application.Quit

[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333

Сообщение отредактировал KSVСуббота, 21.03.2015, 14:34

 

Ответить

85Muslim85

Дата: Суббота, 21.03.2015, 14:35 |
Сообщение № 3

Группа: Заблокированные

Ранг: Участник

Сообщений: 60


Репутация:

-23

±

Замечаний:
80% ±


Excel 2007

все отлично)) спасибки… вот чего я хотел)

Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.Save
Application.Quit

 

Ответить

 

BRP

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

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

Добрый день, уважаемые форумчане! Подскажите макрос, при срабатывании которого документ будет сохранен и закрыт. Хочу сделать кнопку сохранить и выйти…  

 

Sanja

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

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

#2

29.12.2016 13:33:41

Цитата
BRP написал: Подскажите макрос

У макрорекордера спрашивали?

Согласие есть продукт при полном непротивлении сторон.

 

BRP

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

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

Нет, никогда не пользовался им)

 

Sanja

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

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

Самое время начать. Много вопросов отпадёт
Хотя, еще больше добавиться, но уже более КОНКРЕТНЫХ  :)

Изменено: Sanja29.12.2016 13:50:27

Согласие есть продукт при полном непротивлении сторон.

 

Владимир S

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

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

#5

29.12.2016 14:05:12

Код
Sub Выход()
  Dim Push As Integer
  Push = MsgBox("Да - схранить-закрыть. Рекомендуется." & Chr(10) & _
  "Нет - не сохранять-закрыть." & Chr(10) & _
  "Отмена - просто закрыть ЭТО ОКНО.", vbQuestion + vbYesNoCancel, "Укажите что делать?")  
  If Push = vbYes Then
    ActiveWorkbook.Save
    Application.DisplayFullScreen = False
    ActiveWorkbook.Close False  
    
  ElseIf Push = vbNo Then  
    Application.DisplayFullScreen = False
    ActiveWorkbook.Close savechanges:=False   
    
  Else
    Exit Sub
  End If
End Sub

Изменено: Владимир S29.12.2016 16:03:52

 

BRP

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

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

#6

29.12.2016 17:32:46

После закрытия остается пустое окно Excel, которое приходится закрывать вручную. Как этого избежать?

Также конфликтует с другим макросом, практически блокирует его действия.

Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ScreenUpdating = False
    Dim wsSh As Worksheet
    Sheets(sWarning).Visible = -1
    For Each wsSh In ThisWorkbook.Sheets
        If wsSh.Name <> sWarning Then wsSh.Visible = 2
    Next wsSh
    Application.ScreenUpdating = 1
    ThisWorkbook.Save
End Sub
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets(sMainSheet).Visible = -1
    ThisWorkbook.Sheets(sWarning).Visible = 2
    Application.ScreenUpdating = 1
    frmIndicateUser.Show
End Sub

Изменено: BRP29.12.2016 17:36:55

 

Владимир S

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

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

#7

29.12.2016 21:32:40

А вот так попробуйте.

Код
Sub Выход()
'
  Dim Push As Integer
  Push = MsgBox("Да - схранить-закрыть. Рекомендуется." & Chr(10) & _
  "Нет - не сохранять-закрыть." & Chr(10) & _
  "Отмена - просто закрыть ЭТО ОКНО.", vbQuestion + vbYesNoCancel, "Укажите что делать?")
  If Push = vbYes Then
  Application.Quit
    ActiveWorkbook.Save
    Application.DisplayFullScreen = False
    ActiveWorkbook.Close False
    ActiveWorkbook.Close True     
  ElseIf Push = vbNo Then
  Application.Quit
    Application.DisplayFullScreen = False
    ActiveWorkbook.Close savechanges:=False
   ActiveWorkbook.Close True
  Else  
    Exit Sub    
  End If  
End Sub
 

Владимир S, а теперь закрываются все открытые книги Excel ;)

 

BRP

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

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

Владимир S

/

Михаил С.

Действительно закрывает все книги Excel, конфликт с вышеуказанным макросом остался. Еще варианты есть?

 

Михаил С.

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

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

#10

30.12.2016 11:47:40

Код
Sub Выход()
    Dim Push As Integer
    Push = MsgBox("Да - схранить-закрыть. Рекомендуется." & Chr(10) & _
    "Нет - не сохранять-закрыть." & Chr(10) & _
    "Отмена - просто закрыть ЭТО ОКНО.", vbQuestion + vbYesNoCancel, "Укажите что делать?")
    If Push = 2 Then Exit Sub
    If Push = 6 Then ThisWorkbook.Save
    If Workbooks.Count = 1 Then
        Application.Quit
    Else
        ThisWorkbook.Close False
    End If
End Sub

Изменено: Михаил С.30.12.2016 11:49:24

 

BRP

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

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

#11

30.12.2016 13:35:52

Михаил С.

Огромное СПАСИБО! Все работает идеально!!

На чтение 8 мин. Просмотров 6.9k.

Итог: Изучите несколько трюков и советов, чтобы сохранить и закрыть все открытые книги Excel.

Уровень мастерства: Начинающий

3 Tips to Save and Close All Files2

Если вы используете Excel весь день каждый день, как я, то у вас, наверняка, открыто много рабочих книг одновременно. Я стараюсь дисциплинировать себя, но иногда это трудно. И в конце дня мы просто хотим закрыть все открытые рабочие тетради и пойти домой! Итак, этот пост содержит несколько советов по быстрому закрытию всех открытых файлов, чтобы помочь сократить трафик в час пик.

Содержание

  1. Совет № 1: Shift + кнопка закрытия окна
  2. Совет № 2: добавьте кнопку «Закрыть все» на панель быстрого доступа
  3. Совет № 3: Закройте все открытые книги с помощью макроса
  4. У вас есть свои советы по сохранению и закрытию файлов?

Совет № 1: Shift + кнопка закрытия окна

Самый
быстрый способ закрыть все открытые книги — это удерживать клавишу Shift,
нажимая кнопку «Закрыть окно». Кнопка «Закрыть окно» — это «х» в правом верхнем
углу окна приложения

Close All Excel Workooks Shortcut Shift Key Close Button

Если все открытые книги были сохранены, все они будут
закрыты.

Если какая-либо из открытых книг НЕ была сохранена, вам
будет предложено сохранить файл. Появится всплывающее окно, и вам придется
нажимать Сохранить или Не сохранять для каждой несохраненной книги.

Excel Warning Want to Save Changes Before Closing File Window Save All

Окно также содержит кнопку Сохранить все. Вы можете нажать эту кнопку, чтобы сохранить все несохраненные книги за один шаг.

Нажатие на кнопку «Отмена» отменит всю операцию, а все еще открытые книги останутся открытыми.

Но что, если мы не хотим сохранить все или некоторые из открытых рабочих книг? Мы вернемся к этому в совет № 3.

Совет № 2: добавьте кнопку «Закрыть все» на панель быстрого доступа

Мы также можем добавить кнопку «Закрыть все» на панель
быстрого доступа (QAT), чтобы закрыть все открытые книги. Это делает то же
самое, что и сочетание клавиш Shift + Close Window.

Excel Close All Button Quick Access Toolbar

Преимущество здесь в том, что мы можем использовать сочетание клавиш для нажатия кнопки. Доступ к кнопкам QAT можно получить с помощью сочетания клавиш, нажав клавишу Alt и номер, назначенный кнопке.

QAT Keyboard Shortcut to Close All Excel Files

Чтобы добавить кнопку «Закрыть все» в QAT, откройте окно параметров Excel («Файл»> «Параметры») и следуйте инструкциям на изображении ниже.

Add Close All But to Quick Access Toolbar in Excel Options

После нажатия кнопки «Закрыть все» нам будет предложено то же окно, как описано в совете № 1.

Бонусный совет: мы также можем использовать сочетание клавиш Ctrl + W, чтобы закрыть одну книгу. Я упомянул этот совет в своем посте по 17 ярлыкам Excel на 2017 год.

Press Ctrl W to Close Last Excel Workbook and Leave Application Open

Совет № 3: Закройте все открытые книги с помощью макроса

В этом разделе я поделюсь несколькими макросами, которые можно использовать для закрытия всех открытых рабочих книг. Макросы дают нам большую гибкость, когда мы хотим контролировать, какие книги сохраняются перед закрытием.

Макрос для закрытия всех книг без сохранения

Если мы не хотим сохранять какие-либо открытые файлы, мы
можем использовать следующий макрос.

Sub Close_All_Files_No_Save()
' Закройте все открытые книги и не сохраняйте

Dim wb As Workbook

  ' Просмотрите каждую рабочую книгу
  For Each wb In Application.Workbooks
    
    ' Предотвратить рабочую книгу, которая содержит
    ' код от закрытия
    If wb.Name <> ThisWorkbook.Name Then
      
      ' Закройте книгу и не сохраняйте изменения
      wb.Close SaveChanges:=False
    
    End If
  Next wb

End Sub

Как работает этот макрос?

Приведенный выше макрос просматривает все открытые книги на компьютере с помощью цикла For Next Loop. Он использует оператор If, чтобы проверить, является ли файл в цикле (wb.Name) НЕ (<>) файлом, который содержит код ThisWorkbook.Name.

Затем он использует метод Workbooks.Close (страница справки MSDN), чтобы закрыть книгу. Метод Close имеет необязательный параметр для SaveChanges. Мы можем установить значение True, чтобы сохранить изменения, и False, чтобы закрыть без сохранения.

Примечание. Этот макрос следует запускать только в том случае, если вы уверены, что не хотите сохранять изменения ни в одном из открытых файлов. Его нельзя отменить. Возможно, вы также захотите добавить окно сообщения Да / Нет, чтобы предупредить пользователя перед запуском этого макроса.

Макрос для сохранения всех, кроме новых несохраненных книг (блокнот)

В конце рабочего дня у меня обычно есть несколько книг, которые я хочу сохранить, и некоторые, которые я НЕ хочу сохранять. Я часто открываю новые рабочие книги, чтобы использовать файлы Excel для быстрых вычислений. Я называю их «блокноты». Я не хочу сохранять их, но хочу сохранить все другие открытые файлы.

Macro to Save and Close All Files Except New Unsaved Files

Файлы — блокноты никогда не сохранялись, поэтому они еще не имеют расширения. Они называются: Book1, Book2, Book2 и т.д. Обратите внимание, что на снимке экрана отсутствует расширение файла (.xlsx, .xlsm).

Таким образом, мы можем добавить оператор If в наш макрос, чтобы увидеть, существует ли расширение файла. Если расширение файла существует, то мы сохраним файл. Если нет, то мы закроем без сохранения.

Sub Save_and_Close_All_Files_Except_ScratchPads()
' Закройте все открытые книги, кроме новых несохраненных файлов

Dim wb As Workbook

  ' Просмотрите каждую рабочую книгу
  For Each wb In Application.Workbooks
    
    ' Предотвратить рабочую книгу, которая содержит
    ' код от закрытия
    If wb.Name <> ThisWorkbook.Name Then
      
      ' Проверьте, имеет ли имя файла расширение
      If InStr(Right(wb.Name, 5), ".xls") > 0 Then
        wb.Close SaveChanges:=True
      Else
        ' Не сохраняйте изменения, если это блокнот.
        wb.Close SaveChanges:=False
      End If
    
    End If
  Next wb

End Sub

Как работает этот макрос?

Этот макрос похож на макрос для закрытия всех книг. Разница
в том, что мы используем оператор If, чтобы проверить, имеет ли файл
расширение.

Функция Right используется для возврата 5 символов в конце
имени файла. Если wb — это существующий файл, который уже был сохранен, то
Right (wb.Name, 5) вернет «.xlsx» или «.xlsm».

Функция Instr (страница справки MSDN) используется для поиска строки в строке. Возвращает начальный номер строки. Таким образом, если Instr находит «.xls» в пределах «.xlsx» или «.xlsm», он возвращает 1. В противном случае он возвращает 0.

Оператор If проверяет, является ли возвращаемое значение из
Instr больше 0, и сохраняет изменения при закрытии книги. В противном случае
изменения не сохраняются для книг, которые НЕ содержат расширения.

Макрос для сохранения и закрытия всех книг и автоматического именования файлов

Иногда нам можем быть нужно сохранить некоторые из этих новых файлов (блокноты), но у нас нет времени, чтобы просмотреть каждый файл и сохранить его с именем.

Save and Close All Files and Auto Name New Files

Следующий макрос сохранит и закроет ВСЕ файлы и автоматически назовет новые файлы, которые не были сохранены. Он помещает все новые файлы (блокнот) в указанную вами папку.

Unsaved Files Save to a Folder and Automatically Named

Затем вы можете вернуться в эту папку, когда у вас будет свободное время для перемещения и переименования файлов.

Sub Save_and_Close_All_Files()
' Закройте все открытые книги, кроме новых несохраненных файлов

Dim wb As Workbook
Dim sPath As String

  ' Путь, где будут сохранены новые несохраненные файлы.
  ' Измените это на папку на вашем компьютере. Конец с обратной косой чертой 
  sPath = "C:UsersusernameDocumentsExcel CampusScratch Pads"

  ' Просмотрите каждую рабочую книгу
  For Each wb In Application.Workbooks
    
    ' Предотвратить рабочую книгу, которая содержит
    ' код от закрытия
    If wb.Name <> ThisWorkbook.Name Then
      
      ' Проверьте, имеет ли имя файла расширение
      If InStr(Right(wb.Name, 5), ".xls") > 0 Then
        wb.Close SaveChanges:=True
      Else
        ' Сохранить блокноты в папке
        wb.Close SaveChanges:=True, _
            Filename:=sPath & wb.Name & Format(Now, " yyyy-mm-dd-hhmm")
      End If
    
    End If
  Next wb

End Sub

Как работает этот макрос?

Этот макрос работает аналогично двум другим выше.
Единственное отличие состоит в том, что он сохраняет новые файлы (блокноты) в
папку на вашем компьютере.

Чтобы использовать этот макрос, вам нужно изменить
переменную sPath на папку на вашем компьютере. Обязательно заканчивайте строку
пути к файлу обратной косой чертой.

У метода Workbooks.Close есть еще один необязательный
параметр (Filename), который позволяет нам указать имя файла, в котором мы
хотим сохранить файл, если файл еще не был сохранен.

Если мы не используем параметр «Имя файла», Excel предложит
нам меню «Сохранить как» для каждого файла. Таким образом, указание имени файла
обходит это окно и может сэкономить нам много времени.

Значение параметра Filename объединяет строку для полного
пути к файлу. Он также изменяет текущую дату и время до конца имени файла,
используя функции «Формат» и «Сейчас». Функция Format в VBA аналогична функции
TEXT в Excel и позволяет нам указать числовой формат. Функция «Сейчас»
возвращает текущую дату и время на компьютере пользователя.

Я рекомендую добавить эти макросы в вашу личную книгу макросов, чтобы вы могли использовать их в любое время. Чтобы узнать больше, ознакомьтесь с моей статьей и видео о личной книге макросов.

У вас есть свои советы по сохранению и закрытию файлов?

Я надеюсь, что эти советы и макросы помогут вам закончить день немного быстрее. Есть ли у вас какие-либо другие советы по закрытию файлов? Пожалуйста, оставьте комментарий ниже с любыми предложениями или вопросами. Спасибо!

Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

1

13.01.2011, 21:13. Показов 25989. Ответов 27

Метки нет (Все метки)


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

Вроде изучил этот вопрос
‘параметр SaveChanges типа Boolean, если установить True сделанные изменения сохранятся
‘в противном случае нет, если параметр упускается
‘тогда при закрытии появляется диалоговое окно с вопросом о необходимости сохранения
‘параметр FileName необходим, когда идёт вопрос о закрытии книги не связанной ещё с именем файла
‘параметр RouteWorkbook связан с одновременной работой над книгой, он типа Boolean

Но пишу так

Visual Basic
1
2
3
Set oExcel = CreateObject("Excel.Application") 'создать объект Microsoft Excel
....................
oExcel.Workbooks.Close(SaveChanges = True) 'ошибка аргумент не верный???????

так

Visual Basic
1
oExcel.Workbooks.Close

вопросов нет, но мне так не надо



0



Pavel Murtishev

3 / 3 / 0

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

Сообщений: 54

14.01.2011, 08:51

2

Эндрю,

Workbooks — это коллекция объектов Workbook. Попробуйте исполнить данный код:

Visual Basic
1
2
3
Dim oRptWorkBook As Workbook
Set oRptWorkBook = Application.Workbooks.Add
oRptWorkBook.Close savechanges:=False

Должно работать.

BR



0



Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

14.01.2011, 18:53

 [ТС]

3

Вы меня не поняли:
я работаю в Ворде, поэтому создаю объект

Visual Basic
1
Set oExcel = CreateObject("Excel.Application") 'создать объект Microsoft Excel

затем делаю что хочу
………………..
хочу закрыть без вопросов, пишу так:

Visual Basic
1
oExcel.Workbooks.Close(SaveChanges = True) 'ошибка аргумент не верный???????

если напишу так:

Visual Basic
1
oExcel.Workbooks.Close

всё работает, но мне так не надо, так как Эксель спросит, сохранить ли файл, надо чтобы сохранил без вопросов



0



Busine2009

Заблокирован

14.01.2011, 19:45

4

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

oExcel.Workbooks.Close(SaveChanges = True) ‘ошибка аргумент не верный???????

вытащи из скобок и пробелом отбей.



0



Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

14.01.2011, 20:22

 [ТС]

5

теперь

Visual Basic
1
oExcel.Workbooks.Close SaveChanges = True

выделяет .Close и сообщение Wrong number of arguments or invalid property assigment



0



Busine2009

Заблокирован

14.01.2011, 21:15

6

Ципихович Эндрю,
всё правильно, см. #2.



0



Vlanib

Частенько бываю

749 / 330 / 42

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

Сообщений: 854

14.01.2011, 22:25

7

Вот так напиши:

Visual Basic
1
oExcel.Workbooks.Close 1



0



Busine2009

Заблокирован

14.01.2011, 22:30

8

Vlanib,
так не надо писать — это для профессиональных программистов — пиши так, чтобы было понятно.



0



Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

15.01.2011, 11:36

 [ТС]

9

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
'экспорт найденного текста в документе Ворд в Microsoft Excel
'подключаем библиотеку Tools - References - Microsoft Excel 11.0 Object Library или Excel 12.0 Object Library
Dim oExcel As Excel.Application
Dim oWorkbook As Excel.Workbook
Dim Количество_найденного_текста As Long
Set oExcel = CreateObject("Excel.Application") 'создать объект Microsoft Excel
oExcel.Workbooks.Open ("L:Г.xls")
oExcel.Visible = True
'задаём размер шрифта для листа ..., ячейки ... равным 14
Worksheets("Лист1").Range("a1").Font.Size = 14
oExcel.Workbooks.Close 1
oExcel.Workbooks.Close SaveChanges = True

Вот этот скрипт я запускаю в ВБА в Ворде, на двух последних строчках выделяет
‘.Close и сообщение: wrong Number of arguments or invalid property assigment
Что мне там нужно изменить, чтобы файл закрывался без вопросов о его сохранении???



0



Busine2009

Заблокирован

15.01.2011, 11:46

10

Ципихович Эндрю,
11 строку удали, а насчёт 12 строки:
найди 10 отличий между 12 строкой и соответствующей строкой из #2.



0



Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

15.01.2011, 12:05

 [ТС]

11

11 строку удалил
12 строку

Visual Basic
1
oExcel.Workbooks.CLOSE SaveChanges = True

надо сравнить с строкой

Visual Basic
1
oRptWorkBook.Close savechanges:=False

и найти 10 отличий
1 отличие это Фальше-Труе, пока не важно, так как выделяет и до этой строки ещё не дошёл
2 отличие это то что в #2 объект, точка Клозе, ну сделал так
так как не знаю как правильно, приходится угадывать

Visual Basic
1
2
3
Workbook.Close savechanges = False '424 ошибка
oExcel.Close savechanges = False '438 ошибка
oWorkbook.Close savechanges = False '91 ошибка

Вё мимо, ещё 8 отличий не нашёл
увидел двоеточие, попробую

Добавлено через 4 минуты
двоеточие добавил, а ошибки те же

Visual Basic
1
2
3
Workbook.Close savechanges:=False '424
oExcel.Close savechanges:=False '438
oWorkbook.Close savechanges:=False '91



0



Busine2009

Заблокирован

15.01.2011, 12:16

12

Ципихович Эндрю,
теперь 10 строку исправляй, там у тебя не указывается, к какой книге относится лист.



0



Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

15.01.2011, 12:23

 [ТС]

13

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

Ципихович Эндрю,
теперь 10 строку исправляй, там у тебя не указывается, к какой книге относится лист.

10 строка в моём 9 м сообщениии, это вот эта:

Visual Basic
1
Worksheets("Лист1").Range("a1").Font.Size = 14

Во всяком случае она рабочая, ну пусть даже её я заремарчу, ничего ведь не изменится



0



Busine2009

Заблокирован

15.01.2011, 12:31

14

Ципихович Эндрю,
эта строка вообще не рабочая.



0



1508 / 478 / 56

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

Сообщений: 8,008

15.01.2011, 12:54

 [ТС]

15

я её не с потолка взял, искал не могу вспомнить из какого места я её взял
попробовал сейчас в макросе Экселя действительно не работает, а как правильно?
Но ведь в Ворде в том скрипте который я представил не ругается, выполнается и есть результат
согласно её текста, что за подвох??



0



Busine2009

Заблокирован

15.01.2011, 12:56

16

Ципихович Эндрю,
для Wordа эта строка нерабочая, а не для Excel.

Добавлено через 1 минуту
Правильно, вот к этому привязать:

Visual Basic
1
oWorkbook



0



Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

15.01.2011, 13:04

 [ТС]

17

Я Вас уверяю в Ворде, что так

Visual Basic
1
oExcel.Worksheets("Лист1").Range("a1").Font.Size = 14

что так

Visual Basic
1
Worksheets("Лист1").Range("a1").Font.Size = 14

работает!
По закрытию поясните, пожалуйста, как строка будет??



0



Busine2009

Заблокирован

15.01.2011, 13:10

18

Ципихович Эндрю,
Про закрытие всё уже разъяснено. Вставьте ещё раз ваш код, только Worksheets(«Лист1») привяжите к oWorkbook, а не oExcel.



0



Ципихович Эндрю

1508 / 478 / 56

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

Сообщений: 8,008

15.01.2011, 13:22

 [ТС]

19

запускаю с Ворда

Visual Basic
1
2
3
4
5
6
Dim oExcel As Excel.Application
Dim oWorkbook As Excel.Workbook
Dim Количество_найденного_текста As Long
Set oExcel = CreateObject("Excel.Application") 'создать объект Microsoft Excel
oExcel.Workbooks.Open ("L:Глаголы.xls")
oExcel.Visible = True

почему я должен так писать и получать ошибку 91

Visual Basic
1
oWorkbook.Worksheets("Лист1").Range("a1").Font.Size = 14

почему я не должен так писать и не получать ошибку, и получать нужный результат???

Visual Basic
1
oExcel.Worksheets("Лист1").Range("a1").Font.Size = 14



0



Busine2009

Заблокирован

15.01.2011, 13:24

20

Ципихович Эндрю,
в 5 строке помести в переменную oWorkBook открываемый документ.

Добавлено через 53 секунды

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

почему я должен так писать

так запрограммировано.



0



Эти макросы помогут вам закрыть все открытые файлы Excel, оставив лишь текущий файл.

Выбирайте любой из них — они мало чем отличаются.

Первый оставляет открытой только активную книгу, независимо от того, из какого файла запущен этот макрос:

Sub CloseAllWorkbooks1()
    ' закрываем все книги, кроме текущей (активной)
    Dim wb As Workbook: Application.ScreenUpdating = False
    For Each wb In Workbooks    ' перебираем все открытые книги
        If Not wb Is ActiveWorkbook Then    ' если это не этот файл
            If wb.Windows(1).Visible Then wb.Close    ' закрываем его
        End If
    Next wb
End Sub

Второй макрос оставляет открытой только ту книгу, из которой запущен этот самый макрос, независимо от того, какая книга активна на момент запуска:

Sub CloseAllWorkbooks2()
    ' закрываем все книги, кроме той, из которой запущен макрос
    Dim wb As Workbook: Application.ScreenUpdating = False
    For Each wb In Workbooks    ' перебираем все открытые книги
        If Not wb Is ThisWorkbook Then If wb.Windows(1).Visible Then wb.Close
    Next wb
End Sub

Третья версия макроса отличается от первой лишь тем, что все файлы закрываются с сохранением изменений:
(первый макрос в этом случае выдаёт диалоговое окно — сохранять файл, или нет)

Sub CloseAllWorkbooks3()
    ' закрываем все книги, кроме текущей (активной), С СОХРАНЕНИЕМ изменений
    Dim wb As Workbook: Application.ScreenUpdating = False
    For Each wb In Workbooks    ' перебираем все открытые книги
        If wb.Windows(1).Visible = True And (Not wb Is ActiveWorkbook) Then
            ' закрываем с сохранением только изменённые файлы
            wb.Close (Not wb.Saved) ' ранее сохранённые файлы просто закрываются
        End If
    Next wb
End Sub

Ну и четвертый вариант — тоже закрывает все открытые файлы, только изменения в этих файлах не сохраняются:

Sub CloseAllWorkbooks4()
    ' закрываем все книги, кроме текущей (активной), БЕЗ СОХРАНЕНИЯ изменений
    Dim wb As Workbook: Application.ScreenUpdating = False
    For Each wb In Workbooks    ' перебираем все открытые книги
        If wb.Windows(1).Visible Then If Not wb Is ActiveWorkbook Then wb.Close False
    Next wb
End Sub


УРОК 1. Знакомство с макросами / Как работать с макросами в Excel?

Видео: УРОК 1. Знакомство с макросами / Как работать с макросами в Excel?

Содержание

  • Рабочий лист Excel с кнопкой
  • Расположение вкладки разработчика
  • Вставка кнопки макроса на лист
  • Выбор кнопки управления формой
  • Создать кнопку
  • Размер и название кнопки
  • Добавление кода Visual Basic
  • Структура Visual Basic
  • Сохранение книги с помощью макроса
  • Вариант книги с поддержкой макросов
  • Тестирование кнопки макроса
  • Дизайн кнопки макроса
  • Редактирование текста
  • Дополнительный ресурс
  • Как добавить кнопку макроса, которая сохраняет и закрывает книгу Excel

Джеймс любит узнавать о технологиях и делиться тем, что он узнал из своих статей.

Рабочий лист Excel с кнопкой

Перед тем, как приступить к этому руководству, убедитесь, что вкладка разработчика отображается в Microsoft Excel. Если вы не знаете, как добавить вкладку, найдите инструкции здесь. На иллюстрации ниже показано, где находится эта вкладка. Помните, что вкладка разработчика по умолчанию не отображается в Excel. Добавление этой функции позволяет вам работать с макросами, надстройками и задачами, связанными с XML.

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

Расположение вкладки разработчика

Вставка кнопки макроса на лист

Шаг первый для создания кнопки сохранения и закрытия — это найти и щелкнуть вкладку разработчика. После этого вы найдете на ленте раздел, называемый разделами управления. Нажмите кнопку вставки в этом разделе управления. Для выбора станет доступно множество значков. Нас интересует кнопка управления формой, поэтому в разделе элементов управления формы я хочу ее выбрать. Он находится в первой строке первого столбца.

Выбор кнопки управления формой

Создать кнопку

Теперь, когда кнопка выбрана, с курсором перетащите прямоугольник или квадрат где-нибудь на листе Excel, удерживая левую кнопку мыши. После того, как вы остановите перетаскивание, появится назначенное окно макроса. Здесь макрос можно переименовать для удобства использования. Нажмите на новое, и появится другое окно. В этом окне вам нужно написать код, который сообщает кнопке сохранить книгу перед ее закрытием.

Размер и название кнопки

Добавление кода Visual Basic

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

Sub Button2_Click ()
Application.Quit
ThisWorkbook.Save
Конец подписки

После ввода кода обязательно нажмите кнопку сохранения.

Структура Visual Basic

Сохранение книги с помощью макроса

Если книга не была сохранена до предыдущего шага, вам будет предложено сохранить книгу. Имейте в виду, что для работы макросов книга должна быть сохранена как книга Excel с поддержкой макросов.

Вариант книги с поддержкой макросов

Тестирование кнопки макроса

На этом этапе кнопку можно протестировать. Можно выполнить тест сохранения, чтобы убедиться, что кнопка работает правильно. Перед тестированием кнопки убедитесь, что кнопка не выбрана. Это можно сделать, щелкнув ячейку. Теперь, чтобы протестировать кнопку, добавьте текст в любую ячейку без сохранения, затем нажмите кнопку «Сохранить и закрыть». Книга должна закрыться без каких-либо запросов. Когда книга откроется снова, убедитесь, что введенный вами текст сохранен.

Дизайн кнопки макроса

Дизайн кнопки можно изменить, щелкнув ее правой кнопкой мыши и выбрав элемент управления форматом. Вам будет предоставлена ​​возможность изменить несколько свойств кнопки, таких как стиль текста, цвет и размер. У вас также есть возможность изменить внешний вид.

Редактирование текста

Дополнительный ресурс

Если вам нужна дополнительная информация о том, как создать кнопку сохранения и закрытия в Microsoft Excel, попробуйте просмотреть видео ниже.

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

Эта статья точна и правдива, насколько известно автору. Контент предназначен только для информационных или развлекательных целей и не заменяет личного или профессионального совета по деловым, финансовым, юридическим или техническим вопросам.

Автор Carl, 23 июля 2019, 11:24


Carl

  • Посетитель форума
  • Сообщения: 40
  • Записан

С помощью какого кода можно сохранить и закрыть книгу?



Администратор

  • Administrator
  • Сообщения: 2,251
  • Записан

Макрос работает с активным файлом (это файл, который отображается на мониторе).

Sub Макрос()

        ‘ Сохранение файла.
    ActiveWorkbook.Save

        ‘ Закрытия файла.
        ‘ SaveChanges:=False — чтобы не было сообщения, предлагающего сохранить изменения.
        ‘ Ранее в коде сделано сохранение, но бывает так, что, не смотря на это, при закрытии
        ‘ файла появляется сообщение, предлагающее сохранить изменения.
    ActiveWorkbook.Close SaveChanges:=False

End Sub



Carl

  • Посетитель форума
  • Сообщения: 40
  • Записан

Спасибо помогло.

При запуске этого макроса появляется сообщение: Предупреждение о конфиденциальной информации…
Почему появляется это сообщение?



Администратор

  • Administrator
  • Сообщения: 2,251
  • Записан

Это сообщение появляется, т.к. здесь установлена галочка (Excel 2016): Файл — Параметры — Центр управления безопасностью — Параметры центра управления безопасностью… — Параметры конфиденциальности — Параметры для конкретного документа — Удалять персональные данные из свойств файла при сохранении.

Есть два варианта, чтобы не было этого сообщения:

1) уберите эту галочку;

2) окружите сохранение файла таким кодом:
‘ Сохранение файла.
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True



Carl

  • Посетитель форума
  • Сообщения: 40
  • Записан

Большое спасибо. Супер форум.


  • Форум по VBA, Excel и Word

  • VBA, Excel

  • VBA, макросы в Excel

  • Excel VBA Макросы: Код макроса для сохранения и закрытия книги.

Понравилась статья? Поделить с друзьями:
  • Excel макрос закрывает книгу
  • Excel макрос жирный шрифт
  • Excel макрос если ячейка содержит то
  • Excel макрос если ячейка равна то
  • Excel макрос если цифра