Все добрый день! Есть у меня вот макрос, найденный в сети, который зарывает без сохранения все книги кроме активной. Подскжите, плиз, как сделать, чтобы он закрывал без сохранения абсолютно все открытые книги, включая активную?
[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]
Все добрый день! Есть у меня вот макрос, найденный в сети, который зарывает без сохранения все книги кроме активной. Подскжите, плиз, как сделать, чтобы он закрывал без сохранения абсолютно все открытые книги, включая активную?
[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
После 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-ом в цикле? Потому, что если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги
После 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_
Почему не просто снять проверку If-ом в цикле? Потому, что если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги
Вот... Все слова знаю, что значит не понимаю: там if аж два раза есть!Что отпилить надо? Саш, ты же знаешь, что я на 99,9% читатель с навыками писателя на уровне чукчи: Чо нашел или подарили, тем и пользуюсь. Но иногда пытаюсь сам поковыряться, но не всегда успешно .
Почему не просто снять проверку If-ом в цикле? Потому, что если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги
Вот... Все слова знаю, что значит не понимаю: там if аж два раза есть!Что отпилить надо? Саш, ты же знаешь, что я на 99,9% читатель с навыками писателя на уровне чукчи: Чо нашел или подарили, тем и пользуюсь. Но иногда пытаюсь сам поковыряться, но не всегда успешно .Serge1400
Сообщение отредактировал Serge1400 - Четверг, 19.12.2019, 11:48
Но насколько я помню, ты по-вражески сечешь. Вот и прочитай Первый иф - проверка на видимость книги, второй - на то, что книга не активна. Кстати, я бы написал не ActiveWorkbook, а ThisWorkbook
Но насколько я помню, ты по-вражески сечешь. Вот и прочитай Первый иф - проверка на видимость книги, второй - на то, что книга не активна. Кстати, я бы написал не ActiveWorkbook, а ThisWorkbook_Boroda_
Первый иф - проверка на видимость книги, второй - на то, что книга не активна
Вот это то я таки худо-бедно уразумел. С остальным беда. Мне знаний в 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 терминологии не хватает: что значит снять проверку в цикле? Это все что на ИФы завязано затереть? 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
Спасибо за помощь! Но как надо не работает. Если запускаю из книги, где макрос записан ( я его в ленту добавил, чтобы всегда под рукой был), предлагает каждый файл сохранить. Если из другой открытой, то все равно предлагает сохранить, но правда только книгу в которой записан.
Спасибо за помощь! Но как надо не работает. Если запускаю из книги, где макрос записан ( я его в ленту добавил, чтобы всегда под рукой был), предлагает каждый файл сохранить. Если из другой открытой, то все равно предлагает сохранить, но правда только книгу в которой записан.Serge1400
если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги
Макрос закрывает книги по порядку. Не факт, что последней будет закрываться именно та, откуда был этот макрос запущен. Допустим, книг 3, ААА, ВВВ и ССС. Макрос в ААА. Запускаем его, закрывается книга ВВВ, потом ААА и макрос прекращает работу. Книга ССС остается открытой. А вот с закрытием Апликейшена (это текущая сессия Excel), как предложил Владимир, уже без разницы, как файлы расположены. Ставим им "не сохранять" и закрываем все сразу https://u.to/x7AGFw
если книга с макросом закроется не последняя, то макрос перестанет работать и не закроет оставшиеся книги
Макрос закрывает книги по порядку. Не факт, что последней будет закрываться именно та, откуда был этот макрос запущен. Допустим, книг 3, ААА, ВВВ и ССС. Макрос в ААА. Запускаем его, закрывается книга ВВВ, потом ААА и макрос прекращает работу. Книга ССС остается открытой. А вот с закрытием Апликейшена (это текущая сессия Excel), как предложил Владимир, уже без разницы, как файлы расположены. Ставим им "не сохранять" и закрываем все сразу https://u.to/x7AGFw
а подскажите как подправить макрос чтоб закрывались все книги кроме книги с определенным именем, например 111 [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]
а подскажите как подправить макрос чтоб закрывались все книги кроме книги с определенным именем, например 111 [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