Vba excel закрыть файл с сохранением

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

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

 

Ответить

Home / VBA / VBA Close Workbook (Excel File)

To close an Excel file, you need to use the “Close” method. With this method you can, specify if you want to save the changes or not. And, if you want to save and close a file that is not saved yet you can specify the path where you want to save it before closing.

The following is the syntax for the close method.

Workbook.Close (SaveChanges, FileName, RouteWorkbook)

Steps to Close a Workbook

  1. Specify the workbook that you want to close.
  2. Use the close method with that workbook.
  3. In the code method, specify if you want to save the file or not.
  4. In the end, mention the location path where you want to save the file before closing.

In this tutorial, we will look at different ways that you can use to close a workbook in Excel using VBA.

Helpful Links: Run a Macro – Macro Recorder – Visual Basic Editor – Personal Macro Workbook

Close a Workbook without Saving

If you want to save the active workbook without saving you need to use code like the following.

ActiveWorkbook.Close SaveChanges:=False

In this code, I have specified the “False” for the “SaveChanges” argument. So VBA will ignore if there are any changes in the workbook which are not saved. And if you want to close a specific workbook you can use the name of that workbook. Just like the following code.

Workbooks("book1").Close SaveChanges:=False

If you have data in the workbook and you skip the “SaveChanges” argument, then Excel will show a dialog box to confirm if you want to save the workbook or not. The point is: It is better to specify the “SaveChanges” argument even if it’s optional.

Close a Workbook after Saving

As you have seen, there’s an argument in the CLOSE method to specify the path location. Let’s say if you wish to save the “Book6” to the folder on the desktop. Here’s the code that you need to use.

Workbooks("Book6").Close _
SaveChanges:=True, _
Filename:="C:UsersDellDesktopmyFoldermyFile.xlsx"

This code is going to save the workbook “Book6” into the folder that is saved on my desktop with the name “myFIle.xlsx”. But here’s one thing that you need to take care of: IF you already have a workbook with the same name then it will replace that file with the new one.

Don’t worry, there’s a solution that you can use. The following code checks if there’s any file exists with the name that you want to use

Sub vba_close_workbook()
Dim wbCheck As String
wbCheck = Dir("C:UsersDellDesktopmyFoldermyFile.xlsx")
If wbCheck = "" Then
    Workbooks("Book6").Close _
    SaveChanges:=True, _
    Filename:="C:UsersDellDesktopmyFoldermyFile.xlsx"
Else
    MsgBox "Error! Name already used."
End If
End Sub

More on VBA Workbooks

VBA Save Workbook | VBA Delete Workbook | VBA ThisWorkbook | VBA Rename Workbook | VBA Activate Workbook | VBA Combine Workbook | VBA Protect Workbook (Unprotect) | VBA Check IF a Workbook is Open | VBA Open Workbook | VBA Check IF an Excel Workbook Exists in a Folder| VBA Create New Workbook (Excel File)

  • VBA Workbook

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!

Открытие книги Excel из кода VBA. Проверка существования книги. Создание новой книги, обращение к открытой книге и ее закрытие. Методы Open, Add и Close.

Открытие существующей книги

Существующая книга открывается из кода VBA Excel с помощью метода Open:

Workbooks.Open Filename:=«D:test1.xls»

или

Workbooks.Open («D:test1.xls»)

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

Проверка существования файла

Проверить существование файла можно с помощью функции Dir. Проверка существования книги Excel:

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    MsgBox «Файл существует»

End If

Или, если файл (книга Excel) существует, можно сразу его открыть:

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    Workbooks.Open Filename:=«D:test1.xls»

End If

Создание новой книги

Новая рабочая книга Excel создается в VBA с помощью метода Add:

Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:

Workbooks.Add

ActiveWorkbook.SaveAs Filename:=«D:test2.xls»

В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

Обращение к открытой книге

Обращение к активной книге:

Обращение к книге с выполняемым кодом:

Обращение к книге по имени:

Workbooks(«test1.xls»)

Workbooks(«test2.xls»)

Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.

Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

Workbooks(«test1.xlsx»).Close

Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

Workbooks(«test1.xlsx»).Close  SaveChanges:=False

или

Workbooks(«test1.xlsx»).Close  (False)

Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

Workbooks(«test1.xlsx»).Close  SaveChanges:=True

или

Workbooks(«test1.xlsx»).Close (True)


Фразы для контекстного поиска: открыть книгу, открытие книги, создать книгу, создание книги, закрыть книгу, закрытие книги, открыть файл Excel, открытие файла Excel, существование книги, обратиться к открытой книге.


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

1508 / 478 / 56

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

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

1

13.01.2011, 21:13. Показов 26001. Ответов 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



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