Vba создать файл Excel

Обновлено: 21.11.2024

Как скопировать код VBA макроса Excel в книгу, с веб-сайта или из файла примера и куда вставить код. Узнайте, как внести простые изменения в код макроса, если это необходимо. Пошаговые видео, письменные инструкции.

ПРИМЕЧАНИЕ. Если вы хотите записать свой собственный макрос Excel, ознакомьтесь с шагами для начинающих, чтобы записать и протестировать макрос в Excel. Или ознакомьтесь с простыми инструкциями по отображению сообщения в Excel с помощью макроса.

Скопируйте код Excel VBA в:

Копировать код Excel VBA в обычный модуль

Чтобы узнать, как вставить макрос в книгу и запустить макрос, посмотрите этот короткий видеоурок. Письменные инструкции находятся под видео.

Копировать код Excel VBA в обычный модуль

Вместо того, чтобы начинать с нуля, если вам нужен макрос Excel, вы часто можете найти образец кода на авторитетных сайтах в Интернете.

Чтобы скопировать код из этих макросов VBA и добавить его в одну из ваших книг, выполните следующие действия:

  1. Скопируйте образец кода, который вы хотите использовать
  2. Откройте книгу, в которую вы хотите добавить код.
  3. Удерживая нажатой клавишу Alt, нажмите клавишу F11, чтобы открыть редактор Visual Basic.
  4. Выберите Вставить | Модуль
  5. Там, где мигает курсор, выберите «Правка | Вставить

Чтобы запустить код:

  1. На ленте Excel перейдите на вкладку "Вид".
  2. В крайнем правом углу нажмите "Макросы".
  3. Выберите макрос в списке и нажмите кнопку "Выполнить".

Копировать код Excel VBA в модуль рабочего листа

Другим типом кода Excel является код события, который запускается автоматически, когда в книге происходит что-то определенное.

Например, если вы вводите число в ячейку или выбираете запись в раскрывающемся списке ячейки, рабочий лист был изменен. Это может вызвать событие Worksheet_Change.

Код события рабочего листа хранится в модуле рабочего листа. Чтобы добавить код события рабочего листа на свой рабочий лист, выполните следующие действия:

  1. Скопируйте код, который вы хотите использовать
  2. Выберите рабочий лист, на котором вы запускаете код.
  3. Щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код, чтобы открыть редактор Visual Basic.

Копировать код Excel VBA в модуль рабочей книги

Другим типом кода является код события рабочей книги, который следует добавить в модуль кода рабочей книги:

  1. Скопируйте код, который вы хотите использовать
  2. Выберите книгу, в которой вы хотите сохранить код.
  3. Удерживая нажатой клавишу Alt, нажмите клавишу F11, чтобы открыть редактор Visual Basic.
  4. В Project Explorer найдите свою книгу и откройте список объектов Microsoft Excel.
  5. Щелкните правой кнопкой мыши объект ThisWorkbook и выберите "Просмотреть код".
  6. Там, где мигает курсор, выберите «Правка | Вставить

Копировать код Excel VBA из другой книги

Чтобы увидеть шаги по копированию макроса из одной книги в другую в любой версии Excel, просмотрите этот короткий видеоурок. Письменные инструкции находятся под видео.

Копировать код Excel VBA из другой книги

Вы можете найти код в образце книги в Интернете и решить добавить его в одну из своих книг. Вы можете скопировать весь код модуля, выполнив следующие действия:

  1. Открыть обе книги
  2. Удерживая нажатой клавишу Alt, нажмите клавишу F11, чтобы открыть редактор Visual Basic.
  3. В Project Explorer найдите свою книгу и книгу с кодом, который вы хотите скопировать. Скриншот справа, код находится в VBACodeCopy.xls и будет скопирован в MyForm.xlsm
  4. В книге с кодом нажмите знак +, чтобы просмотреть список модулей.
  5. Нажмите на модуль, который вы хотите скопировать, и перетащите его на проект, где вы хотите разместить копию.
  6. Отпустите кнопку мыши, и в рабочей книге появится копия модуля.

Чтобы запустить код:

  1. На ленте Excel перейдите на вкладку "Вид".
  2. В крайнем правом углу нажмите "Макросы".
  3. Выберите макрос в списке и нажмите кнопку "Выполнить".

Разрешить запуск макросов в вашей книге

Чтобы использовать макросы в Excel, вам может потребоваться включить их при открытии файла. Если вы впервые используете макросы на своем текущем компьютере, вам также может потребоваться настроить параметры безопасности макросов.

Следуйте приведенным ниже инструкциям, чтобы внести эти изменения.

Включить макросы при открытии файла

Когда вы открываете книгу, содержащую макросы, вы можете увидеть предупреждение системы безопасности в верхней части листа над панелью формул.

  1. Нажмите кнопку "Параметры".
  2. Нажмите «Включить это содержимое», чтобы разрешить запуск макросов книги, и нажмите «ОК».

Проверьте настройки безопасности макросов

Если вы раньше не запускали макросы, вам может потребоваться изменить уровень безопасности макросов. (Возможно, вам придется согласовать это с вашим ИТ-отделом.)

  1. На ленте перейдите на вкладку "Разработчик" и в группе "Код" нажмите "Безопасность макросов".
    • ПРИМЕЧАНИЕ. Если вкладка "Разработчик" не отображается, выполните описанные здесь действия, чтобы отобразить ее.
  2. В категории "Параметры макросов" в разделе "Параметры макросов" нажмите "Отключить все макросы с уведомлением".
  3. Нажмите "ОК".
  4. Если вы изменили настройку, закройте книгу, а затем снова откройте ее.

Запустить макрос Excel

После копирования макроса в обычный модуль выполните следующие действия, чтобы запустить макрос. Если макрос не запускается, проверьте настройки макроса.

Чтобы запустить макрос Excel:

  1. Скопируйте код макроса в обычный модуль кода в вашем файле.
  2. Затем на вкладке ленты "Вид" нажмите верхнюю часть кнопки "Макрос", чтобы открыть окно "Макрос".
  3. В списке макросов нажмите на макрос, который хотите запустить.
  4. Нажмите кнопку "Выполнить".

Создание макроса события рабочего листа

Чтобы увидеть шаги по созданию макроса события изменения рабочего листа Excel, посмотрите это короткое видео.

Изменить скопированный код Excel VBA

Если вы скопируете код VBA в свой файл Excel, вам может потребоваться внести изменения в имена объектов или другие настройки, чтобы код правильно работал в вашем файле. Вот три вещи, которые нужно проверить, прежде чем пытаться запустить код в вашем файле:

Проверьте имена и диапазоны листов

Если в коде есть имена листов или ссылки на диапазоны, вы можете изменить их, чтобы они соответствовали вашей книге.

  • В коде найдите ссылки на "Рабочие листы" на "Листы" и измените их на имена листов в своей книге.
  • Также найдите ссылки на "диапазон", например Range("A1:G100"), и настройте их так, чтобы они соответствовали местоположению ваших данных.

Эти ссылки могут быть в начале процедуры в операторе Set:

или в другом месте кода.

Если вы запустите код без изменения ссылки, вы можете увидеть сообщение об ошибке: Ошибка выполнения '9': Нижний индекс вне допустимого диапазона

Чтобы увидеть, в чем проблема, нажмите кнопку "Отладка", и строка кода будет выделена желтым цветом.

Чтобы остановить код, откройте меню "Выполнить" и нажмите "Сброс".

Измените имя листа в выделенной строке, сохраните изменения и повторите попытку кода.

Добавить и назвать объекты

Если код относится к объектам на листе, обязательно добавьте эти объекты в свою книгу и используйте правильное имя объекта в коде.

Например, в коде для поля со списком проверки данных вам нужно добавить поле со списком на лист и назвать его TempCombo. Или, если ваше поле со списком имеет другое имя, измените ссылки на код, чтобы они совпадали.

Укажите целевые столбцы или строки

Некоторые коды предназначены для запуска при изменении ячейки в определенной строке или столбце.

Например, в примере кода, показанном ниже, красная точка указывает на то, что столбец 3 — единственный, в котором произойдет изменение.

ПРИМЕЧАНИЕ. Во всех этих примерах вы можете использовать строку вместо столбца, чтобы ограничить цель определенными строками.

A) Если вы хотите, чтобы в вашей книге код запускался при изменении ячейки в столбце E, вы можете изменить 3 на 5.

B) Или добавьте в код дополнительные столбцы. Например:

C) Если вы не хотите ограничивать код определенным столбцом, вы можете удалить две строки (If. End If), отмеченные красными кружками. В этом случае код будет выполняться для изменения в каждом столбце.

D) Если вы хотите, чтобы код выполнялся для любого столбца, КРОМЕ определенного столбца, используйте оператор Not Equal To -- <> -- вместо знака равенства. Например:

Получить образец файла

Чтобы просмотреть примеры модулей рабочих книг, модулей рабочих листов и обычных модулей кода, загрузите файл примера добавления кода в рабочую книгу. Заархивированный файл имеет формат xlsm и содержит макросы. Не забудьте включить макросы при открытии файла, если вы хотите протестировать макросы.

Иногда нам может понадобиться открыть или создать новую книгу с помощью VBA.Вы можете установить только что созданную книгу как объект, чтобы легко обращаться к вашей книге для выполнения дальнейших задач.

Решение(я):

Следующие макросы позволят открыть или создать новую книгу с помощью метода Add.

Создание новой книги в Excel VBA — примеры случаев:

Создать новую книгу

Вы можете использовать следующий код, чтобы создать новую книгу и сохранить ее на диске C с помощью метода "Добавить".

Пояснение:
  1. Метод Workbooks.Add добавит новую книгу
  2. Метод ActiveWorkbook.SaveAs сохранит активную книгу в определенном месте с указанным именем файла.
Вывод:

Вы должны увидеть только что открытую книгу вместе с существующей книгой.

Инструкции:
  1. Открыть книгу Excel
  2. Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
  3. Вставьте новый модуль из меню "Вставка".
  4. Скопируйте приведенный выше код и вставьте его в окно кода.
  5. Нажмите F5, чтобы увидеть результат.
  6. Вы должны увидеть только что открытую книгу, как показано выше.
  7. Сохранить файл как книгу с поддержкой макросов
Создать объект для вновь созданной книги

Вновь созданную книгу можно установить как объект, чтобы можно было легко обращаться к книге для выполнения дальнейших задач.

Вывод:

Вы должны увидеть недавно открытую книгу вместе с существующей книгой.

Инструкции:
  1. Открыть книгу Excel
  2. Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
  3. Вставьте новый модуль из меню "Вставка".
  4. Скопируйте приведенный выше код и вставьте его в окно кода.
  5. Нажмите F5, чтобы увидеть результат.
  6. Вы должны увидеть только что открытую книгу, как показано выше.
  7. Сохранить файл как книгу с поддержкой макросов

Мощные и многоцелевые шаблоны для управления проектами. Теперь легко управляйте своими проектами, задачами, встречами, презентациями, командами, клиентами, заинтересованными сторонами и временем. На этой странице описаны все удивительные новые функции и возможности наших премиальных шаблонов.

Шаблоны расширенного планирования проекта

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, чтобы разрабатывать приложения для розничной торговли, страхования, банковского дела, финансов, телекоммуникаций и здравоохранения.

В этом руководстве я расскажу, как работать с книгами в 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 Создать новую книгу с именем

Создайте книгу с именем в 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.

Читайте также: