Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/закрытие книг excel - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » закрытие книг excel (Макросы/Sub)
закрытие книг excel
Asretyq Дата: Пятница, 16.11.2018, 08:11 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

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

[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'On Error Resume Next
Dim WB As Workbook
Set WB = Application.Workbooks.Open("D:\....\Файл.xlsm")

WB.Close

Application.DisplayAlerts = False

If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close False

Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
Dim WB As Workbook
Set WB = Application.Workbooks.Open("D:\..\Файл.xlsm")
ThisWorkbook.Activate
End Sub
[/vba]
 
Ответить
Сообщениедобрый день
пришлось прибегнуть очередной раз к вашей помощи
вообще никак понять не могу, почему выдает запрос за закрытии, и на сайтах копался, так и не нашел ответа

[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'On Error Resume Next
Dim WB As Workbook
Set WB = Application.Workbooks.Open("D:\....\Файл.xlsm")

WB.Close

Application.DisplayAlerts = False

If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close False

Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
Dim WB As Workbook
Set WB = Application.Workbooks.Open("D:\..\Файл.xlsm")
ThisWorkbook.Activate
End Sub
[/vba]

Автор - Asretyq
Дата добавления - 16.11.2018 в 08:11
_Boroda_ Дата: Пятница, 16.11.2018, 09:11 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
выдает запрос за закрытии

1. Что это за зверь такой?
2. Когда (в какой строке кода) он выдается?
Если в строке с Close, то можно написать закрытие без сохранения
[vba]
Код
Close 0
[/vba]
Или, если нужно сохранять, то сначала сохранить (Save), а потом закрывать. Или попробовать
[vba]
Код
Close 1
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
выдает запрос за закрытии

1. Что это за зверь такой?
2. Когда (в какой строке кода) он выдается?
Если в строке с Close, то можно написать закрытие без сохранения
[vba]
Код
Close 0
[/vba]
Или, если нужно сохранять, то сначала сохранить (Save), а потом закрывать. Или попробовать
[vba]
Код
Close 1
[/vba]

Автор - _Boroda_
Дата добавления - 16.11.2018 в 09:11
sboy Дата: Пятница, 16.11.2018, 09:25 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2236
Репутация: 631 ±
Замечаний: 0% ±

Excel 2010
или строки местами поменять закрытие книги и отключение оповещений
 
Ответить
Сообщениеили строки местами поменять закрытие книги и отключение оповещений

Автор - sboy
Дата добавления - 16.11.2018 в 09:25
_Boroda_ Дата: Пятница, 16.11.2018, 09:29 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
или строки местами поменять

Чуть дополню
И строки местами поменять


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
или строки местами поменять

Чуть дополню
И строки местами поменять

Автор - _Boroda_
Дата добавления - 16.11.2018 в 09:29
Asretyq Дата: Пятница, 16.11.2018, 09:33 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, запрос на закрытии))). Пробовал через 0 тоже не хочет закрывать
пробовал как советует sboy, тоже выдает запрос, всяко переставлял, вообще никак
может дело в этой строке? [vba]
Код
Set WB = Application.Workbooks.Open("D:\....\Файл.xlsm")
[/vba]
 
Ответить
Сообщение_Boroda_, запрос на закрытии))). Пробовал через 0 тоже не хочет закрывать
пробовал как советует sboy, тоже выдает запрос, всяко переставлял, вообще никак
может дело в этой строке? [vba]
Код
Set WB = Application.Workbooks.Open("D:\....\Файл.xlsm")
[/vba]

Автор - Asretyq
Дата добавления - 16.11.2018 в 09:33
_Boroda_ Дата: Пятница, 16.11.2018, 09:46 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да кто ж знает-то? Вы ж в информацию выдаете не ту, о которой Вас спрашивают, а ту, которую сами хотите выдать

И да, зачем Вы при закрытии активного файла открываете тот, другой, если Вы его уже открыли при открытии текущего файла в Workbook_Open? Просто закройте его
[vba]
Код
Workbooks("Файл.xlsm").Close 0
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа кто ж знает-то? Вы ж в информацию выдаете не ту, о которой Вас спрашивают, а ту, которую сами хотите выдать

И да, зачем Вы при закрытии активного файла открываете тот, другой, если Вы его уже открыли при открытии текущего файла в Workbook_Open? Просто закройте его
[vba]
Код
Workbooks("Файл.xlsm").Close 0
[/vba]

Автор - _Boroda_
Дата добавления - 16.11.2018 в 09:46
Asretyq Дата: Пятница, 16.11.2018, 09:56 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, выдает ошибку(((( на этой строке [vba]
Код
Application.Workbooks("D:\Файл.xlsm").Close
[/vba] и через [vba]
Код
Application.Workbooks("D:\Файл.xlsm").Close 0
[/vba]
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'On Error Resume Next
Application.Workbooks("D:\Файл.xlsm").Close

ThisWorkbook.Close 0

Application.DisplayAlerts = False

If Workbooks.Count = 0 Then Application.Quit

Application.DisplayAlerts = True
End Sub
[/vba]


Сообщение отредактировал Asretyq - Пятница, 16.11.2018, 09:58
 
Ответить
Сообщение_Boroda_, выдает ошибку(((( на этой строке [vba]
Код
Application.Workbooks("D:\Файл.xlsm").Close
[/vba] и через [vba]
Код
Application.Workbooks("D:\Файл.xlsm").Close 0
[/vba]
[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'On Error Resume Next
Application.Workbooks("D:\Файл.xlsm").Close

ThisWorkbook.Close 0

Application.DisplayAlerts = False

If Workbooks.Count = 0 Then Application.Quit

Application.DisplayAlerts = True
End Sub
[/vba]

Автор - Asretyq
Дата добавления - 16.11.2018 в 09:56
_Boroda_ Дата: Пятница, 16.11.2018, 10:14 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Сравните
Application.Workbooks("D:\Файл.xlsm")

Workbooks("Файл.xlsm").Close

У Вас файл "Файл" уже открыт. Для его закрытия не нужно писать полный путь к нему


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеСравните
Application.Workbooks("D:\Файл.xlsm")

Workbooks("Файл.xlsm").Close

У Вас файл "Файл" уже открыт. Для его закрытия не нужно писать полный путь к нему

Автор - _Boroda_
Дата добавления - 16.11.2018 в 10:14
Asretyq Дата: Пятница, 16.11.2018, 10:14 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
извиняюсь, я ступил, вместо имени файла указал путь
 
Ответить
Сообщениеизвиняюсь, я ступил, вместо имени файла указал путь

Автор - Asretyq
Дата добавления - 16.11.2018 в 10:14
StoTisteg Дата: Пятница, 16.11.2018, 10:16 | Сообщение № 10
Группа: Авторы
Ранг: Старожил
Сообщений: 1100
Репутация: 97 ±
Замечаний: 0% ±

Excel 2010
Конечно, выдаёт. Я бы тоже выдавал, потому что книги с именем D:\Файл.xlsm существовать не может. [vba]
Код
Application.DisplayAlerts=False
Workbooks("Файл.xlsm").Close
[/vba]


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеКонечно, выдаёт. Я бы тоже выдавал, потому что книги с именем D:\Файл.xlsm существовать не может. [vba]
Код
Application.DisplayAlerts=False
Workbooks("Файл.xlsm").Close
[/vba]

Автор - StoTisteg
Дата добавления - 16.11.2018 в 10:16
_Boroda_ Дата: Пятница, 16.11.2018, 10:20 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
книги с именем D:\Файл.xlsm существовать не может

Почему? Запросто может. Другое дело, что ОТКРЫТАЯ книга так не прописывается


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
книги с именем D:\Файл.xlsm существовать не может

Почему? Запросто может. Другое дело, что ОТКРЫТАЯ книга так не прописывается

Автор - _Boroda_
Дата добавления - 16.11.2018 в 10:20
Asretyq Дата: Пятница, 16.11.2018, 10:27 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
!!!!!!!!!!!!!!!!!!! такой простой код и столько мозгодельства!!!!!!!!!!

[vba]
Код
Application.DisplayAlerts = False

Application.Workbooks("Файл.xlsm").Close
ThisWorkbook.Close
If Workbooks.Count = 0 Then Application.Quit

Application.DisplayAlerts = True
[/vba]

Мы отключаем экран, закрываем файл.xlsm, закрываем текущую книгу, и если количество открытых книг=0 закрываем аппликацую, включаем экран, что не так?
ошибка на "Application.Workbooks("Файл.xlsm").Close"


Сообщение отредактировал Asretyq - Пятница, 16.11.2018, 10:29
 
Ответить
Сообщение!!!!!!!!!!!!!!!!!!! такой простой код и столько мозгодельства!!!!!!!!!!

[vba]
Код
Application.DisplayAlerts = False

Application.Workbooks("Файл.xlsm").Close
ThisWorkbook.Close
If Workbooks.Count = 0 Then Application.Quit

Application.DisplayAlerts = True
[/vba]

Мы отключаем экран, закрываем файл.xlsm, закрываем текущую книгу, и если количество открытых книг=0 закрываем аппликацую, включаем экран, что не так?
ошибка на "Application.Workbooks("Файл.xlsm").Close"

Автор - Asretyq
Дата добавления - 16.11.2018 в 10:27
Asretyq Дата: Пятница, 16.11.2018, 10:28 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, книга открывается при открытии основного файла, я к тому же проверяю
но потом такое происходит....
 
Ответить
Сообщение_Boroda_, книга открывается при открытии основного файла, я к тому же проверяю
но потом такое происходит....

Автор - Asretyq
Дата добавления - 16.11.2018 в 10:28
_Boroda_ Дата: Пятница, 16.11.2018, 10:38 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
такой простой код

Ну да, все правильно. Только перед закрытием напишите еще
[vba]
Код
On Error resume next
[/vba] вдруг файл уже закрыт
но потом такое происходит
Это про что?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
такой простой код

Ну да, все правильно. Только перед закрытием напишите еще
[vba]
Код
On Error resume next
[/vba] вдруг файл уже закрыт
но потом такое происходит
Это про что?

Автор - _Boroda_
Дата добавления - 16.11.2018 в 10:38
Asretyq Дата: Пятница, 16.11.2018, 12:11 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Цитата
Это про что?
выдает всякие ошибки не понятные
_Boroda_, написал пропуск ошибки, теперь аппликация не закрывается, все книги закрылись.
в принципе она и не закрывалась, но ошибку не выдает теперь))


Сообщение отредактировал Asretyq - Пятница, 16.11.2018, 12:13
 
Ответить
Сообщение
Цитата
Это про что?
выдает всякие ошибки не понятные
_Boroda_, написал пропуск ошибки, теперь аппликация не закрывается, все книги закрылись.
в принципе она и не закрывалась, но ошибку не выдает теперь))

Автор - Asretyq
Дата добавления - 16.11.2018 в 12:11
_Boroda_ Дата: Пятница, 16.11.2018, 12:19 | Сообщение № 16
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А как Вы хотели?
Проговорите словами то, что написали кодом. Что получится?

Отключаю сообщения
Закрываю файл "Файл"
Закрываю книгу с этим макросом
========Всё, книга закрыта и макрос вместе с ней. Остальное исполняться не будет
Закрываю Excel
Включаю сообщения


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА как Вы хотели?
Проговорите словами то, что написали кодом. Что получится?

Отключаю сообщения
Закрываю файл "Файл"
Закрываю книгу с этим макросом
========Всё, книга закрыта и макрос вместе с ней. Остальное исполняться не будет
Закрываю Excel
Включаю сообщения

Автор - _Boroda_
Дата добавления - 16.11.2018 в 12:19
Asretyq Дата: Пятница, 16.11.2018, 12:36 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, вот что прописал
[vba]
Код
On Error Resume Next ' пропуск ошибки

Application.DisplayAlerts = False ' отключение экрана

Application.Workbooks("Файл.xlsm").Close 0 ' закрыть "Файл"
If Workbooks.Count = 1 Then Application.Quit ' если количество открытых книг - 1, то закрываем ексель и тут ексель должен полностью закрыться и команды прекращаются
ThisWorkbook.Close 0 ' пробовал отключить данную функцию тоже не играет роли

Application.DisplayAlerts = True' включение экрана
[/vba]


Сообщение отредактировал Asretyq - Пятница, 16.11.2018, 12:37
 
Ответить
Сообщение_Boroda_, вот что прописал
[vba]
Код
On Error Resume Next ' пропуск ошибки

Application.DisplayAlerts = False ' отключение экрана

Application.Workbooks("Файл.xlsm").Close 0 ' закрыть "Файл"
If Workbooks.Count = 1 Then Application.Quit ' если количество открытых книг - 1, то закрываем ексель и тут ексель должен полностью закрыться и команды прекращаются
ThisWorkbook.Close 0 ' пробовал отключить данную функцию тоже не играет роли

Application.DisplayAlerts = True' включение экрана
[/vba]

Автор - Asretyq
Дата добавления - 16.11.2018 в 12:36
StoTisteg Дата: Пятница, 16.11.2018, 13:02 | Сообщение № 18
Группа: Авторы
Ранг: Старожил
Сообщений: 1100
Репутация: 97 ±
Замечаний: 0% ±

Excel 2010
If Workbooks.Count = 0 Then Application.Quit

Application.DisplayAlerts = True
Эта часть кода не будет выполняться никогда. Вообще всё, что после[vba]
Код
ThisWorkbook.Close
[/vba]выполняться не может физически, это приказ "те из вас, кто умер, должны явиться в канцелярию для регистрации факта смерти". Выполнять уже нечего. Вот честно — я не понимаю, чего Вы пытаетесь добиться.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
If Workbooks.Count = 0 Then Application.Quit

Application.DisplayAlerts = True
Эта часть кода не будет выполняться никогда. Вообще всё, что после[vba]
Код
ThisWorkbook.Close
[/vba]выполняться не может физически, это приказ "те из вас, кто умер, должны явиться в канцелярию для регистрации факта смерти". Выполнять уже нечего. Вот честно — я не понимаю, чего Вы пытаетесь добиться.

Автор - StoTisteg
Дата добавления - 16.11.2018 в 13:02
Asretyq Дата: Пятница, 16.11.2018, 13:07 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
StoTisteg, моя задача - закрыть книгу "Файл" и закрыть книгу, в котором содержится макрос, и если другие книги не открыты закрыть сам ексель, вот этого у меня не получается, к сожалению!
сообщение 16.11.2018, 12:36 в принципе по логике он должен срабатывать


Сообщение отредактировал Asretyq - Пятница, 16.11.2018, 13:09
 
Ответить
СообщениеStoTisteg, моя задача - закрыть книгу "Файл" и закрыть книгу, в котором содержится макрос, и если другие книги не открыты закрыть сам ексель, вот этого у меня не получается, к сожалению!
сообщение 16.11.2018, 12:36 в принципе по логике он должен срабатывать

Автор - Asretyq
Дата добавления - 16.11.2018 в 13:07
StoTisteg Дата: Пятница, 16.11.2018, 13:30 | Сообщение № 20
Группа: Авторы
Ранг: Старожил
Сообщений: 1100
Репутация: 97 ±
Замечаний: 0% ±

Excel 2010
закрыть книгу, в котором содержится макрос, и если другие книги не открыты закрыть сам ексель
И не получится. Получится только так:[vba]
Код
Application.DisplayAlerts=False
On Error Resume Next
Workbooks("Файл.xlsm").Close
If Workbooks.Count=1 Then
Thisworkbook.Save
Application.Quit
End If
[/vba]Закрытие ThisWorkbook или приложения ВСЕГДА будет последним действием кода, что бы Вы там после них ни писали.


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Пятница, 16.11.2018, 13:34
 
Ответить
Сообщение
закрыть книгу, в котором содержится макрос, и если другие книги не открыты закрыть сам ексель
И не получится. Получится только так:[vba]
Код
Application.DisplayAlerts=False
On Error Resume Next
Workbooks("Файл.xlsm").Close
If Workbooks.Count=1 Then
Thisworkbook.Save
Application.Quit
End If
[/vba]Закрытие ThisWorkbook или приложения ВСЕГДА будет последним действием кода, что бы Вы там после них ни писали.

Автор - StoTisteg
Дата добавления - 16.11.2018 в 13:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » закрытие книг excel (Макросы/Sub)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!