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

Вход

Регистрация

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

 

= Мир MS Excel/Как модернизировать макрос "закрыть все книги" - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как модернизировать макрос "закрыть все книги" (Макросы/Sub)
Как модернизировать макрос "закрыть все книги"
Serge1400 Дата: Четверг, 19.12.2019, 10:38 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 99
Репутация: 0 ±
Замечаний: 0% ±

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

[vba]
Код
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
[/vba]


Сообщение отредактировал Serge1400 - Четверг, 19.12.2019, 10:39
 
Ответить
СообщениеВсе добрый день!
Есть у меня вот макрос, найденный в сети, который зарывает без сохранения все книги кроме активной. Подскжите, плиз, как сделать, чтобы он закрывал без сохранения абсолютно все открытые книги, включая активную?

[vba]
Код
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
[/vba]

Автор - Serge1400
Дата добавления - 19.12.2019 в 10:38
_Boroda_ Дата: Четверг, 19.12.2019, 10:40 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6201 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
После Next перед Sub (между этими строками) добавить строку
[vba]
Код
ActiveWorkbook.Close
[/vba]
Вот так
[vba]
Код
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
ActiveWorkbook.Close
End Sub
[/vba]
Почему не просто снять проверку If-ом в цикле? Потому, что если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПосле Next перед Sub (между этими строками) добавить строку
[vba]
Код
ActiveWorkbook.Close
[/vba]
Вот так
[vba]
Код
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
ActiveWorkbook.Close
End Sub
[/vba]
Почему не просто снять проверку If-ом в цикле? Потому, что если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги

Автор - _Boroda_
Дата добавления - 19.12.2019 в 10:40
Serge1400 Дата: Четверг, 19.12.2019, 11:46 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 99
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Почему не просто снять проверку If-ом в цикле? Потому, что если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги


Вот... Все слова знаю, что значит не понимаю: там if аж два раза есть!Что отпилить надо?
Саш, ты же знаешь, что я на 99,9% читатель с навыками писателя на уровне чукчи:
Чо нашел или подарили, тем и пользуюсь. Но иногда пытаюсь сам поковыряться, но не всегда успешно .


Сообщение отредактировал Serge1400 - Четверг, 19.12.2019, 11:48
 
Ответить
Сообщение
Почему не просто снять проверку If-ом в цикле? Потому, что если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги


Вот... Все слова знаю, что значит не понимаю: там if аж два раза есть!Что отпилить надо?
Саш, ты же знаешь, что я на 99,9% читатель с навыками писателя на уровне чукчи:
Чо нашел или подарили, тем и пользуюсь. Но иногда пытаюсь сам поковыряться, но не всегда успешно .

Автор - Serge1400
Дата добавления - 19.12.2019 в 11:46
_Boroda_ Дата: Четверг, 19.12.2019, 11:51 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6201 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Но насколько я помню, ты по-вражески сечешь. Вот и прочитай :D
Первый иф - проверка на видимость книги, второй - на то, что книга не активна. Кстати, я бы написал не ActiveWorkbook, а ThisWorkbook


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

Автор - _Boroda_
Дата добавления - 19.12.2019 в 11:51
Serge1400 Дата: Четверг, 19.12.2019, 12:11 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 99
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Первый иф - проверка на видимость книги, второй - на то, что книга не активна

Вот это то я таки худо-бедно уразумел. С остальным беда.
Мне знаний в VBA терминологии не хватает: что значит снять проверку в цикле? Это все что на ИФы завязано затереть?
P.S. Испытал - затер все ифы - не, не работает.
И еще: сделал как предложено: работает, но стал спрашивать о сохранении активной книги. Как сделать все зарывалось без вопросов?
[vba]
Код
Sub CloseAllWorkbooks4()
' закрываем все книги, кроме текущей (активной), БЕЗ СОХРАНЕНИЯ изменений
Dim wb As Workbook: Application.ScreenUpdating = False
For Each wb In Workbooks ' перебираем все открытые книги
If wb.Windows(1).Visible Then If Not wb Is ThisWorkbook Then wb.Close False
Next wb
ActiveWorkbook.Close
End Sub
[/vba]


Сообщение отредактировал Serge1400 - Четверг, 19.12.2019, 13:47
 
Ответить
Сообщение
Первый иф - проверка на видимость книги, второй - на то, что книга не активна

Вот это то я таки худо-бедно уразумел. С остальным беда.
Мне знаний в VBA терминологии не хватает: что значит снять проверку в цикле? Это все что на ИФы завязано затереть?
P.S. Испытал - затер все ифы - не, не работает.
И еще: сделал как предложено: работает, но стал спрашивать о сохранении активной книги. Как сделать все зарывалось без вопросов?
[vba]
Код
Sub CloseAllWorkbooks4()
' закрываем все книги, кроме текущей (активной), БЕЗ СОХРАНЕНИЯ изменений
Dim wb As Workbook: Application.ScreenUpdating = False
For Each wb In Workbooks ' перебираем все открытые книги
If wb.Windows(1).Visible Then If Not wb Is ThisWorkbook Then wb.Close False
Next wb
ActiveWorkbook.Close
End Sub
[/vba]

Автор - Serge1400
Дата добавления - 19.12.2019 в 12:11
Апострофф Дата: Четверг, 19.12.2019, 14:31 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 263
Репутация: 82 ±
Замечаний: 0% ±

Excel 1997
Как сделать все зарывалось без вопросов?

Все ли теперь?
[vba]
Код
Sub CloseAll()
For Each wb In Workbooks ' перебираем все открытые книги
  wb.Saved = True
Next
Application.Quit
End Sub
[/vba]
 
Ответить
Сообщение
Как сделать все зарывалось без вопросов?

Все ли теперь?
[vba]
Код
Sub CloseAll()
For Each wb In Workbooks ' перебираем все открытые книги
  wb.Saved = True
Next
Application.Quit
End Sub
[/vba]

Автор - Апострофф
Дата добавления - 19.12.2019 в 14:31
Serge1400 Дата: Четверг, 19.12.2019, 14:49 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 99
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Цитата Апострофф, 19.12.2019 в 14:31, в сообщении № 6 ()
Все ли теперь?

Спасибо за помощь!
Но как надо не работает.
Если запускаю из книги, где макрос записан ( я его в ленту добавил, чтобы всегда под рукой был), предлагает каждый файл сохранить.
Если из другой открытой, то все равно предлагает сохранить, но правда только книгу в которой записан.
 
Ответить
Сообщение
Цитата Апострофф, 19.12.2019 в 14:31, в сообщении № 6 ()
Все ли теперь?

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

Автор - Serge1400
Дата добавления - 19.12.2019 в 14:49
_Boroda_ Дата: Четверг, 19.12.2019, 14:51 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6201 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
ActiveWorkbook.Close False
[/vba]
А Ифы затирать нельзя. Я ж писал
если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги

Макрос закрывает книги по порядку. Не факт, что последней будет закрываться именно та, откуда был этот макрос запущен.
Допустим, книг 3, ААА, ВВВ и ССС. Макрос в ААА. Запускаем его, закрывается книга ВВВ, потом ААА и макрос прекращает работу. Книга ССС остается открытой.
А вот с закрытием Апликейшена (это текущая сессия Excel), как предложил Владимир, уже без разницы, как файлы расположены. Ставим им "не сохранять" и закрываем все сразу
https://u.to/x7AGFw

Добавлено
Владимир - это Апострофф


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
ActiveWorkbook.Close False
[/vba]
А Ифы затирать нельзя. Я ж писал
если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги

Макрос закрывает книги по порядку. Не факт, что последней будет закрываться именно та, откуда был этот макрос запущен.
Допустим, книг 3, ААА, ВВВ и ССС. Макрос в ААА. Запускаем его, закрывается книга ВВВ, потом ААА и макрос прекращает работу. Книга ССС остается открытой.
А вот с закрытием Апликейшена (это текущая сессия Excel), как предложил Владимир, уже без разницы, как файлы расположены. Ставим им "не сохранять" и закрываем все сразу
https://u.to/x7AGFw

Добавлено
Владимир - это Апострофф

Автор - _Boroda_
Дата добавления - 19.12.2019 в 14:51
Апострофф Дата: Четверг, 19.12.2019, 15:05 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 263
Репутация: 82 ±
Замечаний: 0% ±

Excel 1997
[offtop]
как предложил Владимир

Владимир - это кто?
Может быть Апострофф?[/offtop]
 
Ответить
Сообщение[offtop]
как предложил Владимир

Владимир - это кто?
Может быть Апострофф?[/offtop]

Автор - Апострофф
Дата добавления - 19.12.2019 в 15:05
_Boroda_ Дата: Четверг, 19.12.2019, 15:13 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6201 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не знаю, как в профиле написано, так и Владимир
К сообщению приложен файл: 5526279.gif(20.2 Kb)


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

Автор - _Boroda_
Дата добавления - 19.12.2019 в 15:13
Апострофф Дата: Четверг, 19.12.2019, 15:19 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 263
Репутация: 82 ±
Замечаний: 0% ±

Excel 1997
[offtop]Владимир`ов много во вселенной, Апострофф тут один?[/offtop]
 
Ответить
Сообщение[offtop]Владимир`ов много во вселенной, Апострофф тут один?[/offtop]

Автор - Апострофф
Дата добавления - 19.12.2019 в 15:19
_Boroda_ Дата: Четверг, 19.12.2019, 15:22 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6201 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Согласен. Мне кажется, что Владимир как-то вежлевее. Но без проблем, подправлю свой пост , мне не сложно


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

Автор - _Boroda_
Дата добавления - 19.12.2019 в 15:22
Апострофф Дата: Четверг, 19.12.2019, 15:38 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 263
Репутация: 82 ±
Замечаний: 0% ±

Excel 1997
[vba]
Код
wb.Saved = True
[/vba]
Ставим им "не сохранять"

Ставим им "Сохранено" - так правильнее по контексту.


Сообщение отредактировал Апострофф - Четверг, 19.12.2019, 15:45
 
Ответить
Сообщение[vba]
Код
wb.Saved = True
[/vba]
Ставим им "не сохранять"

Ставим им "Сохранено" - так правильнее по контексту.

Автор - Апострофф
Дата добавления - 19.12.2019 в 15:38
Апострофф Дата: Четверг, 19.12.2019, 18:53 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 263
Репутация: 82 ±
Замечаний: 0% ±

Excel 1997
Владимир - это Апострофф

Категорично слишком, или только мне так кажется?
Апострофф - это Владимир, надеюсь что это здесь навсегда.
 
Ответить
Сообщение
Владимир - это Апострофф

Категорично слишком, или только мне так кажется?
Апострофф - это Владимир, надеюсь что это здесь навсегда.

Автор - Апострофф
Дата добавления - 19.12.2019 в 18:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как модернизировать макрос "закрыть все книги" (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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