Vba excel создает новую книгу с именем
Обновлено: 24.11.2024
Что делает Excel VBA Workbooks.Add Method?
Excel VBA Workbooks. Метод Add используется для создания новой книги. Предположим, у вас есть книга с именем workbook1, внутри workbook1 вам нужно создать новую книгу и манипулировать ею, затем вам нужно вставить метод Workbooks.Add в workbook1. После того, как вы создали книгу, она становится активной, вы можете установить название книги, сохранить файл и т. д.
Одно из распространенных применений метода Workbooks.Add для копирования данных из рабочей книги в новые рабочие листы для распространения разных рабочих листов среди разных людей.
Синтаксис Workbooks.Добавить метод
Если этот аргумент опущен, Microsoft Excel создает новую книгу с несколькими пустыми листами (количество листов задается свойством SheetsInNewWorkbook). Если аргумент Template указывает файл, имя файла может включать путь.
Примечания
Workbooks.Add — это метод (функция объекта), который возвращает объект рабочей книги. Вы можете визуально увидеть рабочую книгу, открытую после использования метода, и вы также можете определить объект рабочей книги, чтобы получить возвращенную рабочую книгу.
Пример 1. Создание новой книги и ее закрытие
В приведенном ниже коде создается рабочая книга под названием «Новая рабочая книга», а затем задаются заголовок и тема для рабочей книги, наконец, сохраняется рабочая книга и закрывается. Как только вновь созданная книга закрывается, исходная книга снова активируется.
Пример 2. Перенос определенных данных в новую книгу
Этот вопрос изначально был задан в сообществе Microsoft, и на него я ответил.
Вопрос
Я уверен, что моя проблема не уникальна. У меня есть документ excel с сотнями столбцов, и мне нужно всего около дюжины из них. Мне нужно иметь возможность извлекать определенные
столбцы на новый лист Excel в виде повторяющегося процесса без ручного вмешательства.
Все, что мне нужно, это вытащить определенные столбцы на новый лист Excel из документ Excel, который обновляется ежедневно.
Есть ли у нас автоматизированный процесс, в котором я могу просто запустить макрос и извлечь обновленные данные из документа Excel в новый?
Любой помощь приветствуется.
Спасибо.
Ответить
Приведенный ниже код извлекает определенные столбцы из книги, а затем копирует их в новую книгу.
VBA Создать новую книгу с именем
Создайте книгу с именем в Excel VBA. Где Workbook представляет объект. Это часть коллекции рабочих тетрадей. Добавить — это метод создания новой книги в Excel VBA. Когда мы создаем новую рабочую книгу, имя рабочей книги по умолчанию — Book1, Book2, … BookN. Где N представляет следующий доступный номер. Новое расширение рабочей книги Excel по умолчанию — «.xlsx». Мы также можем сохранить как xlsm, xls, xla, xlts, xlsb, xml и т. д. Обычно мы создаем новую книгу бессчетное количество раз. Нажмите сочетание клавиш Ctrl+N, чтобы создать новую книгу из открытой книги.
Синтаксис для создания новой книги
Вот следующий синтаксис для создания новой книги.
Макрос для создания новой книги с именем в Excel VBA
Вот следующий пример макроса для создания новой книги с именем в Excel VBA. В приведенной ниже процедуре add — это метод создания новой книги. Вы можете изменить имя файла в соответствии с вашими требованиями.
Код VBA для создания новой книги с именем с использованием объекта
Давайте рассмотрим следующий пример макроса для создания новой книги с именем, назначенным объекту в Excel VBA. В следующей процедуре набор используется для определения объекта рабочей книги.
Инструкции по использованию макроса
Вот инструкции по использованию вышеуказанной процедуры макроса в редакторе Visual Basic.
- Откройте редактор Visual Basic (VBE), нажав Alt +F11.
- Перейдите в окно кода, нажав F7.
- Скопируйте указанный выше макрос или процедуру
- Вставьте скопированный код в окно кода.
- Запустите макрос, нажав F5 или команду "Выполнить".
- Вы можете увидеть новый файл Test.xlsx в папке VBAF1 на диске D.
Статьи по теме Workbook Object
Вам также могут понравиться статьи по теме Workbook Object.
Оставить ответ Отменить ответ
Вы должны войти в систему, чтобы оставить комментарий.
Вопросы и ответы на собеседовании по Excel VBA
Функции VBA по категориям
Шаблоны управления проектами
Пакет профессиональных шаблонов PM
Учебное пособие по VBA
Последние публикации
Программирование VBA
Категории
Создавайте профессиональные инструменты и приложения автоматизации для своих проектов с помощью наших готовых к использованию кодов и приложений VBA.
В этом руководстве я расскажу, как работать с книгами в Excel с помощью VBA.
В Excel «Рабочая книга» — это объект, который является частью коллекции «Рабочие книги». В рабочей книге у вас есть различные объекты, такие как рабочие листы, листы диаграмм, ячейки и диапазоны, объекты диаграмм, фигуры и т. д.
С помощью VBA вы можете выполнять множество действий с объектом книги, например открывать определенную книгу, сохранять и закрывать книги, создавать новые книги, изменять свойства книги и т. д.
Итак, приступим.
Все коды, упомянутые в этом руководстве, необходимо поместить в редактор Visual Basic. Перейдите в раздел «Куда поместить код VBA», чтобы узнать, как это работает.
Если вы заинтересованы в простом изучении VBA, ознакомьтесь с моим онлайн-обучением Excel VBA.
Это руководство охватывает:
Ссылка на рабочую книгу с помощью VBA
Существуют разные способы обращения к объекту Workbook в VBA. Метод, который вы выберете, будет зависеть от того, что вы хотите сделать. В этом разделе я расскажу о различных способах обращения к книге вместе с некоторыми примерами кодов.
Использование имен рабочих книг
Если у вас есть точное название книги, на которую вы хотите сослаться, вы можете использовать это имя в коде.
Давайте начнем с простого примера.
Если у вас открыты две книги и вы хотите активировать книгу с именем — Examples.xlsx, вы можете использовать следующий код:
Обратите внимание, что вам нужно использовать имя файла вместе с расширением, если файл был сохранен. Если он не был сохранен, вы можете использовать имя без расширения файла.
Если вы не знаете, какое имя использовать, обратитесь за помощью к Project Explorer.
Если вы хотите активировать рабочую книгу и выбрать определенную ячейку на листе этой рабочей книги, вам необходимо указать полный адрес ячейки (включая рабочую книгу и имя рабочего листа).
Приведенный выше код сначала активирует Sheet1 в книге Examples.xlsx, а затем выбирает ячейку A1 на листе.
Вы часто будете видеть код, в котором ссылка на рабочий лист или ячейку/диапазон делается без ссылки на рабочую книгу. Это происходит, когда вы ссылаетесь на рабочий лист/диапазоны в той же рабочей книге, в которой есть код и которая также является активной рабочей книгой. Однако в некоторых случаях необходимо указать книгу, чтобы убедиться, что код работает (подробнее об этом в разделе ThisWorkbook).
Использование порядковых номеров
Вы также можете обращаться к книгам по их порядковым номерам.
Например, если у вас открыты три книги, следующий код покажет вам имена трех книг в окне сообщения (по одной за раз).
В приведенном выше коде используется MsgBox — функция, которая показывает окно сообщения с указанным текстом/значением (в данном случае это имя книги).
Одна из проблем, с которой я часто сталкиваюсь при использовании порядковых номеров в рабочих книгах, заключается в том, что вы никогда не знаете, какая из них является первой книгой, а какая второй и так далее. Чтобы быть уверенным, вам нужно будет запустить код, как показано выше, или что-то подобное, чтобы просмотреть открытые книги и узнать их порядковый номер.
Excel считает, что книга, открытая первой, имеет порядковый номер 1, следующая — 2 и т. д.
Несмотря на этот недостаток, использование порядковых номеров может оказаться полезным. Например, если вы хотите просмотреть все открытые книги и сохранить их, вы можете использовать порядковые номера. В этом случае, поскольку вы хотите, чтобы это произошло со всеми книгами, вас не беспокоят их индивидуальные порядковые номера.
Приведенный ниже код будет перебирать все открытые книги и закрывать все, кроме книги с этим кодом VBA.
Приведенный выше код подсчитывает количество открытых книг, а затем просматривает все книги с помощью цикла For Each.
Он использует условие IF, чтобы проверить, совпадает ли имя книги с именем книги, в которой выполняется код.
Если это не совпадение, книга закрывается и переходит к следующей.
Обратите внимание, что мы запустили цикл от WbCount до 1 с шагом -1. Делается это так, как с каждым циклом количество открытых книг уменьшается.
Эта рабочая тетрадь подробно описана в следующем разделе.
Использование ActiveWorkbook
ActiveWorkbook, как следует из названия, относится к активной рабочей книге.
Приведенный ниже код покажет вам имя активной книги.
Когда вы используете VBA для активации другой книги, часть ActiveWorkbook в VBA после этого начнет ссылаться на активированную книгу.
Вот пример этого.
Если у вас есть рабочая книга, и вы вставляете в нее следующий код и запускаете ее, она сначала покажет имя книги, в которой есть код, а затем имя Examples.xlsx (который активируется кодом) .
Обратите внимание, что при создании новой книги с помощью VBA эта вновь созданная книга автоматически становится активной книгой.
Использование этой книги
ThisWorkbook относится к рабочей книге, в которой выполняется код.
Частью каждой книги будет объект ThisWorkbook (отображаемый в Project Explorer).
«ThisWorkbook» может хранить обычные макросы (аналогичные тем, которые мы добавляем в модули), а также процедуры обработки событий. Процедура события — это то, что запускается на основе события, например двойного щелчка по ячейке, сохранения книги или активации листа.
Любая процедура события, которую вы сохраняете в этой «Книге», будет доступна во всей книге, в отличие от событий на уровне листа, которые ограничены только определенными листами.
Например, если дважды щелкнуть объект ThisWorkbook в Project Explorer и скопировать и вставить в него приведенный ниже код, он будет показывать адрес ячейки при каждом двойном щелчке по любой из ячеек во всей книге.
Хотя основная роль ThisWorkbook заключается в хранении процедуры события, вы также можете использовать ее для ссылки на книгу, в которой выполняется код.
Приведенный ниже код вернет имя книги, в которой выполняется код.
Преимущество использования ThisWorkbook (по сравнению с ActiveWorkbook) заключается в том, что он будет ссылаться на одну и ту же книгу (ту, в которой есть код) во всех случаях. Таким образом, если вы используете код VBA для добавления новой книги, ActiveWorkbook изменится, но ThisWorkbook по-прежнему будет ссылаться на ту, в которой есть код.
Создание нового объекта книги
Следующий код создаст новую книгу.
Когда вы добавляете новую книгу, она становится активной книгой.
Следующий код добавит новую книгу, а затем покажет вам имя этой книги (которое будет именем типа Book1 по умолчанию).
Открыть книгу с помощью VBA
Вы можете использовать VBA для открытия определенной книги, если знаете путь к файлу книги.
Приведенный ниже код откроет книгу — Examples.xlsx, которая находится в папке «Документы» в моей системе.
Если файл существует в папке по умолчанию, то есть в папке, в которой VBA сохраняет новые файлы по умолчанию, вы можете просто указать имя книги, не указывая полный путь.
Если книга, которую вы пытаетесь открыть, не существует, вы увидите сообщение об ошибке.
Чтобы избежать этой ошибки, вы можете добавить несколько строк в свой код, чтобы сначала проверить, существует ли файл или нет, и если он существует, то попытаться открыть его.
Приведенный ниже код проверит расположение файла и, если он не существует, отобразит пользовательское сообщение (не сообщение об ошибке):
Вы также можете использовать диалоговое окно "Открыть", чтобы выбрать файл, который хотите открыть.
Приведенный выше код открывает диалоговое окно «Открыть». Когда вы выбираете файл, который хотите открыть, он присваивает путь к файлу переменной FilePath. Затем Workbooks.Open использует путь к файлу, чтобы открыть файл.
Если пользователь не открывает файл и нажимает кнопку "Отмена", FilePath становится False. Чтобы избежать ошибки в этом случае, мы использовали оператор «Возобновить дальше при ошибке».
Сохранение книги
Чтобы сохранить активную книгу, используйте следующий код:
Этот код работает для книг, которые уже были сохранены ранее. Кроме того, поскольку рабочая книга содержит указанный выше макрос, если он не был сохранен в виде файла .xlsm (или .xls), вы потеряете макрос при следующем открытии.
Если вы сохраняете книгу в первый раз, появится подсказка, как показано ниже:
При первом сохранении лучше использовать параметр «Сохранить как».
Приведенный ниже код сохранит активную книгу в виде файла .xlsm в папке по умолчанию (это папка документов в моей системе).
Если вы хотите, чтобы файл был сохранен в определенном месте, вам нужно указать это в значении имени файла.Приведенный ниже код сохраняет файл на моем рабочем столе.
Если вы хотите, чтобы пользователь мог выбрать место для сохранения файла, вы можете вызвать диалоговое окно "Сохранить как". В приведенном ниже коде показано диалоговое окно «Сохранить как», в котором пользователь может выбрать место для сохранения файла.
Обратите внимание, что вместо использования FileFormat:=xlOpenXMLWorkbookMacroEnabled вы также можете использовать FileFormat:=52, где 52 — это код xlOpenXMLWorkbookMacroEnabled.
Сохранение всех открытых книг
Если у вас открыто несколько книг и вы хотите сохранить все книги, вы можете использовать приведенный ниже код:
Вышеприведенное сохраняет все рабочие книги, включая те, которые никогда не сохранялись. Книги, которые не были сохранены ранее, будут сохранены в папке по умолчанию.
Если вы хотите сохранить только те рабочие книги, которые были сохранены ранее, вы можете использовать следующий код:
Сохранение и закрытие всех книг
Если вы хотите закрыть все рабочие книги, кроме рабочей книги, в которой есть текущий код, вы можете использовать приведенный ниже код:
Приведенный выше код закроет все книги (кроме книги с кодом ThisWorkbook). Если в этих книгах есть изменения, они будут сохранены. Если есть книга, которая никогда не сохранялась, появится диалоговое окно сохранения как.
Сохранить копию книги (с отметкой времени)
Когда я работаю со сложными данными и информационными панелями в книгах Excel, я часто создаю разные версии своих книг. Это полезно, если что-то пойдет не так с моей текущей книгой. Я бы по крайней мере сохранил его копию под другим именем (и я потерял бы работу, которую проделал, только после создания копии).
Вот код VBA, который создаст копию вашей книги и сохранит ее в указанном месте.
Приведенный выше код будет сохранять копию вашей книги каждый раз, когда вы запускаете этот макрос.
Хотя это прекрасно работает, я бы чувствовал себя более комфортно, если бы у меня сохранялись разные копии всякий раз, когда я запускаю этот код. Причина, по которой это важно, заключается в том, что если я сделаю непреднамеренную ошибку и запущу этот макрос, он сохранит работу с ошибками. И у меня не было бы доступа к работе до того, как я совершил ошибку.
Чтобы справиться с такими ситуациями, вы можете использовать приведенный ниже код, который сохраняет новую копию работы каждый раз, когда вы ее сохраняете. И он также добавляет дату и метку времени как часть имени книги. Это поможет вам отследить любую сделанную вами ошибку, поскольку вы никогда не потеряете ни одну из ранее созданных резервных копий.
Приведенный выше код будет создавать копию каждый раз, когда вы запускаете этот макрос, и добавлять отметку даты/времени к имени книги.
Создать новую книгу для каждого рабочего листа
В некоторых случаях у вас может быть книга с несколькими листами, и вы хотите создать книгу для каждого листа.
Это может быть в том случае, если у вас есть ежемесячные/ежеквартальные отчеты в одной книге, и вы хотите разделить их на одну книгу для каждого листа.
Или, если у вас есть отчеты по отделам, и вы хотите разделить их на отдельные рабочие книги, чтобы отправлять эти отдельные рабочие книги руководителям отделов.
Вот код, который создаст рабочую книгу для каждого рабочего листа, присвоит ей то же имя, что и рабочий лист, и сохранит ее в указанной папке.
В приведенном выше коде мы использовали две переменные «ws» и «wb».
Код просматривает каждый рабочий лист (используя цикл For Each Next) и создает для него рабочую книгу. Он также использует метод копирования объекта листа для создания копии листа в новой книге.
Обратите внимание, что я использовал оператор SET для назначения переменной wb любой новой книге, созданной с помощью кода.
Эту технику можно использовать для назначения объекта книги переменной. Это описано в следующем разделе.
Назначить объект рабочей книги переменной
В VBA вы можете присвоить объект переменной, а затем использовать эту переменную для ссылки на этот объект.
Например, в приведенном ниже коде я использую VBA для добавления новой книги, а затем назначаю эту книгу переменной wb. Для этого мне нужно использовать оператор SET.
После того как рабочая книга назначена переменной, все свойства рабочей книги также становятся доступными для переменной.
Обратите внимание, что первым шагом в коде является объявление «wb» в качестве переменной типа рабочей книги. Это сообщает VBA, что эта переменная может содержать объект книги.
Следующий оператор использует SET, чтобы присвоить переменную новой книге, которую мы добавляем. Как только это назначение выполнено, мы можем использовать переменную wb, чтобы сохранить книгу (или сделать с ней что-нибудь еще).
Перебор открытых книг
Выше мы уже видели несколько примеров кодов, в которых использовались циклы.
В этом разделе я объясню различные способы обхода открытых книг с помощью VBA.
Предположим, вы хотите сохранить и закрыть все открытые книги, кроме той, в которой есть код, тогда вы можете использовать следующий код:
Приведенный выше код использует цикл For Each для просмотра каждой книги в коллекции Workbooks. Для этого нам сначала нужно объявить «wb» в качестве переменной типа книги.
В каждом цикле анализируется имя каждой книги, и если оно не совпадает с именем книги, содержащей код, она закрывается после сохранения ее содержимого.
То же самое может быть достигнуто с помощью другого цикла, как показано ниже:
Приведенный выше код использует цикл For Next для закрытия всех книг, кроме той, в которой есть код. В этом случае нам не нужно объявлять переменную рабочей книги, вместо этого нам нужно подсчитать общее количество открытых рабочих книг. Когда у нас есть счет, мы используем цикл For Next для просмотра каждой книги. Кроме того, в этом случае мы используем порядковый номер для ссылки на рабочие книги.
Обратите внимание, что в приведенном выше коде мы переходим от WbCount к 1 с шагом -1. Это необходимо, поскольку в каждом цикле рабочая книга закрывается, а количество рабочих книг уменьшается на 1.
Ошибка при работе с объектом рабочей книги (ошибка выполнения «9»)
Одна из наиболее распространенных ошибок, с которой вы можете столкнуться при работе с книгами, — это ошибка времени выполнения «9» — нижний индекс вне допустимого диапазона.
Как правило, ошибки VBA не очень информативны и часто оставляют вам возможность выяснить, что пошло не так.
Вот некоторые из возможных причин, которые могут привести к этой ошибке:
- Книга, к которой вы пытаетесь получить доступ, не существует. Например, если я пытаюсь получить доступ к пятой книге с помощью Workbooks(5), а открыто только 4 книги, я получу эту ошибку.
- Если вы используете неправильное имя для ссылки на книгу. Например, если имя вашей рабочей книги — Examples.xlsx, и вы используете Example.xlsx. то он покажет вам эту ошибку.
- Если вы не сохранили книгу и используете расширение, вы получите эту ошибку. Например, если ваша книга называется Book1 и вы используете имя Book1.xlsx, не сохраняя его, вы получите эту ошибку.
- Книга, к которой вы пытаетесь получить доступ, закрыта.
Получить список всех открытых книг
Если вы хотите получить список всех открытых книг в текущей книге (книге, в которой вы запускаете код), вы можете использовать следующий код:
Приведенный выше код добавляет новый рабочий лист, а затем выводит список имен всех открытых рабочих книг.
Если вы хотите также получить их путь к файлу, вы можете использовать следующий код:
Откройте указанную книгу, дважды щелкнув ячейку
Если у вас есть список путей к файлам для книг Excel, вы можете использовать приведенный ниже код, чтобы просто дважды щелкнуть ячейку с путем к файлу, и эта книга откроется.
Этот код будет помещен в окно кода ThisWorkbook.
- Дважды щелкните объект ThisWorkbook в проводнике проекта. Обратите внимание, что объект ThisWorkbook должен находиться в книге, в которой вы хотите использовать эту функцию.
- Скопируйте и вставьте приведенный выше код.
Теперь, если у вас есть точный путь к файлам, которые вы хотите открыть, вы можете сделать это, просто дважды щелкнув путь к файлу, и VBA мгновенно откроет эту книгу.
Где разместить код VBA
Хотите узнать, где находится код VBA в вашей книге Excel?
Excel имеет серверную часть VBA, которая называется редактором VBA. Вам необходимо скопировать и вставить код в окно кода модуля VB Editor.
Иногда нам может понадобиться открыть или создать новую книгу с помощью VBA. Вы можете установить только что созданную книгу как объект, чтобы было легко обращаться к вашей книге для выполнения дальнейших задач.
Решение(я):
Следующие макросы позволят открыть или создать новую книгу с помощью метода Add.
Создание новой книги в Excel VBA — примеры случаев:
Создать новую книгу
Вы можете использовать следующий код, чтобы создать новую книгу и сохранить ее на диске C с помощью метода "Добавить".
Пояснение:
- Метод Workbooks.Add добавит новую книгу
- Метод ActiveWorkbook.SaveAs сохранит активную книгу в определенном месте с указанным именем файла.
Вывод:
Вы должны увидеть только что открытую книгу вместе с существующей книгой.
Инструкции:
- Открыть книгу Excel
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Вставьте новый модуль из меню "Вставка".
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Нажмите F5, чтобы увидеть результат.
- Вы должны увидеть только что открытую книгу, как показано выше.
- Сохранить файл как книгу с поддержкой макросов
Создать объект для вновь созданной книги
Вновь созданную книгу можно установить как объект, чтобы можно было легко обращаться к книге для выполнения дальнейших задач.
Вывод:
Вы должны увидеть недавно открытую книгу вместе с существующей книгой.
Инструкции:
- Открыть книгу Excel
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Вставьте новый модуль из меню "Вставка".
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Нажмите F5, чтобы увидеть результат.
- Вы должны увидеть только что открытую книгу, как показано выше.
- Сохранить файл как книгу с поддержкой макросов
Мощные и многоцелевые шаблоны для управления проектами. Теперь легко управляйте своими проектами, задачами, встречами, презентациями, командами, клиентами, заинтересованными сторонами и временем. На этой странице описаны все удивительные новые функции и возможности наших премиальных шаблонов.
Шаблоны расширенного планирования проекта
120+ шаблонов для управления проектами
Excel | PowerPoint | Слово
УЛУЧШЕННЫЙ ШАБЛОН УПРАВЛЕНИЯ РЕСУРСАМИ
50+ основных шаблонов управления проектами
Excel | PowerPoint | Слово
Шаблоны управления портфелем проектов
Excel | Шаблоны PowerPoint
50+ шаблонов управления проектами в Excel
Поделитесь этой историей, выберите платформу!
Об авторе: Валли
Разработчик Excel VBA, имеющий около 8 лет опыта использования Excel и VBA для автоматизации повседневных задач, создания отчетов и подготовки информационных панелей. Валли делится полезными примерами VBA и советами, которые помогают нам автоматизировать повседневные задачи.
Похожие записи
VBA ActiveSheet — объект активного листа Excel
Цветовой индекс Excel VBA
Копировать диапазон Excel VBA на другой лист с форматированием
Показать или скрыть|Выгрузить форму пользователя
3 комментария
Спасибо, что поделились информацией. Я очень ценю ваши усилия и жду ваших следующих статей, спасибо еще раз.
Можете ли вы показать, как использовать параметр "шаблон" при добавлении
у меня несколько файлов Excel.
все excel объединили один excel и сохранили заданный путь, формат даты имени excel.
не могли бы вы дать код
Оставить комментарий Отменить ответ
Вы должны войти в систему, чтобы оставить комментарий.
120+ премиальных шаблонов управления проектами
Вкладки анализа
Загрузить бесплатную надстройку Excel 2007, 2010, 2013 для создания инновационных информационных панелей, инструментов для интеллектуального анализа данных, анализа и визуализации. Изучите VBA для MS Excel, Word, PowerPoint, Access, Outlook, чтобы разрабатывать приложения для розничной торговли, страхования, банковского дела, финансов, телекоммуникаций и здравоохранения.
Читайте также: