Перейти до основного контенту

Закриття всіх відкритих книг у Excel VBA

9 хв читання
2478 переглядів

Microsoft Excel з його потужними функціями є одним з найпопулярніших інструментів для роботи з даними. Під час роботи з багатьма книгами та аркушами може знадобитися закрити всі відкриті книги. Віртуальне середовище для виконання макросів VBA може використовуватися для автоматизації цього завдання, що може істотно спростити роботу.

Закриття всіх книг може бути корисним, коли ви хочете очистити оперативну пам'ять, звільнити ресурси комп'ютера або просто зберегти зміни у всіх відкритих книгах. У Excel VBA існує кілька способів закриття книг, включаючи закриття однієї книги або всіх відкритих книг.

У статті розглянемо приклади коду на VBA, що дозволяють закрити всі відкриті книги. Ми розглянемо два основних підходи: використання циклу для закриття кожної відкритої книги по черзі та використання методу Application з параметрами, які закриють усі відкриті книги одночасно.

Закриття відкритих книг Excel VBA-прості способи

Спосіб 1: закриття всіх відкритих книг

Перший спосіб полягає у використанні методу Workbooks.Close . Цей метод закриває всі відкриті книги. Ось приклад коду:

Sub CloseAllWorkbooks()Dim wb As WorkbookFor Each wb In Workbookswb.Close SaveChanges:=FalseNext wbEnd Sub

Цей код перебирає всі відкриті книги в Excel і закриває кожну. Параметр SaveChanges встановлено на False, щоб не зберігати зміни перед закриттям книги. Якщо вам потрібно зберегти зміни, встановіть цей параметр На True .

Спосіб 2: Закриття певної книги

Якщо вам потрібно закрити лише певну книгу, ви можете скористатися методом Workbooks.Close із зазначенням назви книги або індексу. Ось приклад коду:

Sub CloseWorkbookByName()Dim wb As WorkbookSet wb = Workbooks("Название книги.xlsx")wb.Close SaveChanges:=FalseEnd SubSub CloseWorkbookByIndex()Dim wb As WorkbookSet wb = Workbooks(2)wb.Close SaveChanges:=FalseEnd Sub

У першому прикладі книга закривається по імені. У другому прикладі книга закривається за індексом (починаючи з 1).

Спосіб 3: Закриття всіх книг, крім активної

Цей спосіб закриває всі книги, крім активної. Він заснований на використанні об'єкта ThisWorkbook , який є поточною книгою. Ось приклад коду:

Sub CloseAllWorkbooksExceptActive()Dim wb As WorkbookFor Each wb In WorkbooksIf Not wb Is ThisWorkbook Thenwb.Close SaveChanges:=FalseEnd IfNext wbEnd Sub

У цьому прикладі відбувається перебір усіх книг в Excel, і якщо поточна книга Не дорівнює активній книзі, вона закривається.

На закінчення, закриття відкритих книг у Excel VBA є важливим завданням для забезпечення ефективності роботи з макросами. Ці прості способи допоможуть вам закрити всі відкриті книги або обрану книгу, уникаючи потенційних помилок і уповільнення роботи.

Як закрити всі відкриті книги одночасно в Excel VBA

Якщо вам потрібно закрити всі відкриті книги в Excel за допомогою VBA, ви можете використовувати такий код:

Sub ЗакрытьВсеКниги()Dim Книга As WorkbookApplication.ScreenUpdating = False'Проходим по всем открытым книгамFor Each Книга In WorkbooksКнига.Close SaveChanges:=FalseNext КнигаApplication.ScreenUpdating = TrueEnd Sub

Цей код закриває всі відкриті книги в Excel без збереження змін. Він також тимчасово вимикає оновлення екрана, щоб код виконувався швидко та ефективно.

Ви можете зберегти цей код у своєму макросі або додати його до свого проекту VBA в Excel. Після цього ви можете легко викликати цей макрос і він закриє всі відкриті книги в Excel.

Закриття всіх відкритих книг може бути корисним, коли ви хочете розпочати роботу з новим набором даних або коли ви хочете очистити пам'ять і звільнити ресурси комп'ютера.

Примітка: Перед закриттям книги без збереження змін, переконайтеся, що ви зберегли всі необхідні дані, щоб уникнути втрати інформації.

Закриття відкритих книг у Excel VBA за допомогою циклу

У мові програмування VBA існує можливість закриття всіх відкритих книг в Excel за допомогою циклу. Це може бути корисно, коли потрібно швидко закрити кілька книг або очистити середовище розробки перед виконанням інших операцій.

Для реалізації даного завдання ми можемо використовувати цикл For Each, який дозволяє перебрати всі відкриті книги в додатку Excel. Усередині циклу ми можемо викликати метод Close для кожної книги, щоб закрити її.

Ось приклад коду, який демонструє закриття всіх відкритих книг:

Sub CloseAllWorkbooks() Dim wb As Workbook For Each wb In Workbooks wb.Close SaveChanges:=False Next wb End Sub

У цьому прикладі ми оголошуємо змінну WB типу Workbook, яка буде використовуватися для ітерації книг. Потім ми використовуємо цикл For Each для перегляду всіх книг у колекції Workbooks.

Усередині циклу ми викликаємо метод Close для кожної книги, передаючи параметр SaveChanges зі значенням False. Це гарантує, що зміни не будуть збережені при закритті книги. Якщо ви хочете зберегти зміни, змініть значення параметра SaveChanges на True.

Після завершення циклу всі книги будуть закриті, і ви можете продовжувати виконувати інші операції в Excel.

Використовуючи цей код, ви можете легко закрити всі відкриті книги в Excel VBA і спростити свою роботу з додатком.

Як закрити певну відкриту книгу в Excel VBA

Для закриття певної відкритої книги в Excel VBA можна використовувати метод Close . Цей метод дозволяє закрити активну книгу або вказану книгу за назвою чи індексом.

Ось приклад коду, який демонструє закриття книги За назвою:

Sub ЗакрытьКнигу()Dim книгаЗакрыть As Workbook'Устанавливаем книгу, которую нужно закрытьSet книгаЗакрыть = Workbooks("Название книги.xlsx")'Закрываем книгукнигаЗакрыть.Close'Освобождаем ресурсы памятиSet книгаЗакрыть = NothingEnd Sub

У цьому прикладі ми створюємо змінну книгазакрити, яка містить посилання на книгу із зазначеним іменем. Потім ми застосовуємо метод Close до цієї змінної, щоб закрити книгу. Нарешті, ми звільняємо ресурси пам'яті, встановлюючи змінну книгазакрити В Значення Nothing .

Якщо ви не знаєте назви книги, але знаєте її індекс, ви можете скористатися наступним кодом:

Sub ЗакрытьКнигу()Dim книгаЗакрыть As Workbook'Устанавливаем книгу, которую нужно закрыть по индексуSet книгаЗакрыть = Workbooks(1) '1 - индекс книги'Закрываем книгукнигаЗакрыть.Close'Освобождаем ресурсы памятиSet книгаЗакрыть = NothingEnd Sub

В даному прикладі ми встановлюємо змінну книгазакрити рівній книзі із зазначеним індексом (1). Потім ми застосовуємо метод Close і звільняємо ресурси пам'яті.

Використовуючи наведені вище приклади коду, ви зможете закрити певну відкриту книгу в Excel vba.

Закриття відкритих книг у Excel VBA із збереженням змін

У мові програмування VBA (Visual Basic for Applications) можна автоматизувати закриття відкритих книг в програмі Excel. При цьому можна вказати, щоб зміни, внесені в книги, зберігалися перед виходом.

Для закриття всіх відкритих книг із збереженням змін в Excel VBA ми можемо використовувати цикл, який буде перебирати кожну відкриту книгу і викликати метод Close . Використовуючи додатковий аргумент методу Close, який відповідає за збереження змін, ми можемо вказати, що зміни повинні бути збережені.

Нижче наведено код VBA, який закриває всі відкриті книги:

Dim wb As WorkbookFor Each wb In Application.Workbookswb.Close SaveChanges:=TrueNext wb

У цьому коді ми використовуємо змінну wb, яка представляє кожну відкриту книгу в колекції Workbooks об'єкта Application . Потім ми викликаємо метод Close для кожної книги і передаємо аргумент SaveChanges:=True , щоб зберегти зміни перед закриттям.

Таким чином, цей код закриває всі відкриті книги в Excel VBA і зберігає всі зміни, внесені в них.

При використанні цього коду слід враховувати, що він буде закривати всі відкриті книги, в тому числі і персональні книги (personal.xlsb), якщо вони відкриті. Тому перед використанням коду переконайтеся, що він не порушить ваш поточний процес роботи.

Якщо вам потрібно закрити тільки певні книги, ви можете внести відповідні зміни в код шляхом додавання умов або зміни способу вибору книг для закриття.