Как создавать в excel открываемые

Создание раскрывающегося списка

Создание раскрывающегося списка

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

Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

  1. На новом листе введите данные, которые должны отображаться в раскрывающемся списке. Желательно, чтобы элементы списка содержались в
    таблице Excel
    . Если это не так, список можно быстро преобразовать в таблицу, выделив любую ячейку диапазона и нажав

    Ctrl+T

    .

    Таблица Excel, используемая в качестве источника для списка проверки данных

    Примечания: 

    • Почему данные следует поместить в таблицу? Когда ваши данные находятся в таблице при
      добавлении или удалении элементов из списка
      , любые раскрывающиеся списки, основанные на этой таблице, будут автоматически обновляться. Дополнительные действия не требуются.

    • Сейчас самое время
      отсортировать данные в диапазоне или таблице
      в раскрывающемся списке.

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

  3. Перейдите на вкладку
    данных

    на ленте, затем


    в проверку данных

    .

    Примечание: 
    Если вы не можете щелкнуть

    проверку данных

    , возможно, рабочий лист защищен или общедоступен.
    Разблокируйте определенные области защищенной книги
    или прекратите совместное использование листа, а затем повторите шаг 3.

  4. На вкладке

    Параметры

    в поле

    Разрешить

    щелкните

    Список

    .

  5. Щелкните поле

    Источник

    и выделите диапазон списка. В примере данные находятся на листе «Города» в диапазоне A2:A9. Обратите внимание на то, что строка заголовков отсутствует в диапазоне, так как она не является одним из вариантов, доступных для выбора.

    Параметры списка проверки данных

  6. Если можно оставить ячейку пустой, установите флажок

    Игнорировать пустые

    ячейки.

  7. Установите флажок

    Список допустимых значений

  8. Откройте вкладку

    Сообщение для ввода.

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

      Отображать подсказку, если ячейка является текущей

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

      Вкладка "Сообщение для ввода" в диалоговом окне "Проверка данных"

  9. Откройте вкладку

    Сообщение об ошибке.

    • Если вы хотите, чтобы при вводе значения, которого нет в списке, появлялось всплывающее сообщение, установите флажок

      Выводить сообщение об ошибке,

      выберите параметр в поле

      Вид

      и введите заголовок и сообщение. Если вы не хотите, чтобы сообщение отображалось, снимите этот флажок.

      Параметры сообщения об ошибке для раскрывающегося списка проверки данных

  10. Не знаете, какой параметр выбрать в поле

    Вид

    ?

    • Чтобы отобразить сообщение, не препятствующее вводу данных, которые не содержатся в раскрывающемся списке, выберите вариант

      Сведения

      или Предупреждение. Если выбрать вариант «Сообщение», сообщение будет отображаться со значком
      В сообщении отображается значок информации, но это не мешает людям выбирать элементы из раскрывающегося списка
      , а если «Предупреждение» — со значком
      В сообщении отображается значок предупреждения, но это не мешает людям выбирать элементы из раскрывающегося списка
      .

    • Чтобы заблокировать пользователям ввод данных, которые не содержатся в раскрывающемся списке, выберите вариант

      Остановка

      .

      Примечание: 
      Если вы не добавили заголовок и текст, по умолчанию выводится заголовок «Microsoft Excel» и сообщение «Введенное значение неверно. Набор значений, которые могут быть введены в ячейку, ограничен».

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

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

Раскрывающийся список со значениями "Высокий", "Средний" и "Низкий"

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

  1. Создайте список допустимых элементов для раскрывающегося списка. Для этого введите элементы на листе в одном столбце или строке без пустых ячеек.

  2. Выделите ячейки, для которых нужно ограничить ввод данных.

  3. На вкладке

    Данные

    в группе

    Инструменты

    щелкните

    Проверка данных

    или

    Проверить

    .

    Меню "Данные" на панели инструментов Excel с выбранной кнопкой "Проверка данных"

    Примечание: 
    Если команда проверки недоступна, возможно, лист защищен или книга является общей. Если книга является общей или лист защищен, изменить параметры проверки данных невозможно. Дополнительные сведения о защите книги см. в статье
    Защита книги
    .

  4. Откройте вкладку

    Параметры

    и во всплывающем меню

    Разрешить

    щелкните

    пункт Список

    .

  5. Щелкните поле

    Источник

    и выделите на листе список допустимых элементов.

    Диалоговое окно свернется, чтобы было видно весь лист.

  6. Нажмите клавишу ВВОД или кнопку

    Развернуть
    Кнопка "Развернуть" в диалоговом окне "Проверка данных"
    , чтобы развернуть диалоговое окно, а затем щелкните

    ОК

    .

    Советы: 

    • Значения также можно ввести непосредственно в поле

      Источник

      через запятую.

    • Чтобы изменить список допустимых элементов, просто измените значения в списке-источнике или диапазон в поле

      Источник

    • Можно указать собственное сообщение об ошибке, которое будет отображаться при вводе недопустимых данных. На вкладке

      Данные

      щелкните

      Проверка данных

      или

      Проверить

      , а затем щелкните

      Сообщение об ошибке

      .

См. также

Применение проверки данных к ячейкам

  1. На новом листе введите данные, которые должны отображаться в раскрывающемся списке. Желательно, чтобы элементы списка содержались в
    таблице Excel
    .

    Примечания: 

    • Почему данные следует поместить в таблицу? Когда ваши данные находятся в таблице при
      добавлении или удалении элементов из списка
      , любые раскрывающиеся списки, основанные на этой таблице, будут автоматически обновляться. Дополнительные действия не требуются.

    • Теперь следует
      отсортировать данные в том порядке, в котором они должны отображаться
      в раскрывающемся списке.

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

  3. Откройте вкладку

    Данные

    на ленте и щелкните кнопку

    Проверка данных

    .

  4. На вкладке

    Параметры

    в поле

    Разрешить

    щелкните

    Список

    .

  5. Если вы уже создали таблицу с элементами раскрывающегося списка, щелкните поле

    Источник

    и выделите ячейки, содержащие эти элементы. Однако не включайте в него ячейку заголовка. Добавьте только ячейки, которые должны отображаться в раскрывающемся списке. Список элементов также можно ввести непосредственно в поле

    Источник

    через запятую. Например:


    Фрукты;Овощи;Зерновые культуры;Молочные продукты;Перекусы

  6. Если можно оставить ячейку пустой, установите флажок

    Игнорировать пустые

    ячейки.

  7. Установите флажок

    Список допустимых значений

  8. Откройте вкладку

    Сообщение для ввода.

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

      Показывать сообщения

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

  9. Откройте вкладку

    Сообщение об ошибке.

    • Если вы хотите, чтобы при вводе значения, которого нет в списке, появлялось всплывающее сообщение, установите флажок

      Показывать оповещения

      , выберите параметр в поле

      Тип

      , и введите заголовок и сообщение. Если вы не хотите, чтобы сообщение отображалось, снимите этот флажок.

  10. Щелкните

    ОК

    .

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

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Добавление и удаление элементов раскрывающегося списка

Видео: создание раскрывающихся списков и управление ими

Общие сведения о таблицах Excel

Применение проверки данных к ячейкам

Блокировка и разблокировка определенных областей защищенного листа

Нужна дополнительная помощь?

Раскрывающийся список в Excel – один из методов упорядочивания данных, выполняющий как визуальную функцию, освобождая пространство на листе, так и функциональную – делая таблицу интерактивной и изменяемой. Существуют разные способы создания данного элемента, и об основных из них я хочу рассказать в рамках этого материала, чтобы даже у начинающих пользователей не осталось вопросов по этой теме.

Вариант 1: Группировка существующего списка

Создание выпадающего списка в Excel – задача нетрудная, она не требует от пользователя каких-то особых знаний. Первый метод подойдет в тех ситуациях, когда у вас уже есть готовый перечень чего-либо и вы хотите сделать так, чтобы каждая строка могла заменить собой другую, то есть названия можно было свободно менять, отталкиваясь от уже добавленных значений. Это может звучать сложно, но на деле все куда проще, в чем вы и убедитесь далее.

  1. Обратите внимание на следующий скриншот. Это простой пример списка продуктов. Нужно сделать так, чтобы любое значение из этого списка можно было поставить в любую клетку столбца, с чем и поможет справиться выпадающий список. Сначала выделите все ячейки (игнорируя название столбца).Выделение группы значений для создания выпадающего списка в Excel

  2. Перейдите на вкладку «‎Данные» и выберите инструмент «‎Проверка данных».Переход в окно для создания выпадающего списка в Excel

  3. В новом окне в качестве типа данных укажите «‎Список», отыскав соответствующий вариант из выпадающего меню.Выбор типа проверки данных для создания выпадающего списка в Excel

  4. В качестве источника задайте те самые ячейки, выделив их левой кнопкой мыши. Нажмите «‎ОК» для применения настроек.Выбор диапазона для группы значений для создания выпадающего списка в Excel

  5. Теперь напротив каждой ячейки вы видите кнопку со стрелкой вниз, которая и отвечает за вызов раскрывающегося перечня.Проверка создания выпадающего списка в Excel из группы значений

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Вариант 2: Ручное добавление элементов списка

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

  1. Выделите заранее подготовленную область, где хотите расположить перечень. Перейдите на вкладку «‎Данные» и откройте «‎Проверка данных».Выделение пустых ячеек создания выпадающего списка в Excel

  2. Выберите в качестве типа данных список, а в «‎Источник» перечислите значения, которые желаете в него добавить. Используйте «‎;», чтобы отделить одно значение от другого.Заполнение данных выпадающего списка в Excel для пустых ячеек

  3. Подтвердите изменения и вернитесь к таблице. Теперь при развертывании списка вы сможете выбрать один из добавленных вариантов.Проверка выпадающего списка из пустых ячеек в Excel

Вариант 3: Выбор массива с именем

В Excel есть функция, позволяющая присвоить массиву имя и в дальнейшем выбирать его при использовании формул. Как вы видели в предыдущих вариантах, объявление «‎Источника» при формировании выпадающего списка тоже похоже на создание формулы, а это значит, что в нем можно использовать массив, предварительно объявив его.

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

  2. Измените имя массива на любое, начинающееся с буквы.Переименование массива данных для создания выпадающего списка в Excel

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

  4. В качестве источника укажите созданный массив, написав его название после «‎=».Указание названия массива данных для создания выпадающего списка в Excel

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

Вариант 4: Создание выпадающего списка из таблицы

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

  1. Выделите все ячейки, включая название столбца, и на главной вкладке нажмите кнопку «‎Сформировать как таблицу».Выбор группы для создания таблицы для создания выпадающего списка в Excel

  2. Выберите подходящий для вас тип оформления.Создание таблицы для создания выпадающего списка в Excel

  3. При появлении окна с расположением данных просто нажмите Enter, поскольку диапазон выбран предварительно.Указание диапазона таблицы для создания выпадающего списка в Excel

  4. Вы автоматически окажетесь на вкладке «‎Конструктор таблицы», где можете изменить ее имя на любое удобное, начинающееся с буквы. Изменение названия таблицы для создания выпадающего списка в Excel

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

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

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

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

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

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

Создание раскрывающегося списка

Путь: меню «Данные» — инструмент «Проверка данных» — вкладка «Параметры». Тип данных – «Список».

Создание выпадающего списка.

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

  1. Вручную через «точку-с-запятой» в поле «Источник».
  2. Ввод значений.

  3. Ввести значения заранее. А в качестве источника указать диапазон ячеек со списком.
  4. Проверка вводимых значений.

  5. Назначить имя для диапазона значений и в поле источник вписать это имя.

Имя диапазона.
Раскрывающийся список.

Любой из вариантов даст такой результат.



Выпадающий список в Excel с подстановкой данных

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

  1. Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
  2. Форматировать как таблицу.

  3. Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
  4. Выпадающий список.

  5. Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:

Ввод значения в источник.

Протестируем. Вот наша таблица со списком на одном листе:

Список и таблица.

Добавим в таблицу новое значение «елка».

Добавлено значение елка.

Теперь удалим значение «береза».

Удалено значение береза.

Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.

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

Ввод данных из списка.

  1. Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
  2. Создание имени.

  3. Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
  4. Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
  5. Сообщение об ошибке.

  6. Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
  7. Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim lReply As Long
     
        If Target.Cells.Count > 1 Then Exit Sub
        If Target.Address = "$C$2" Then
         If IsEmpty(Target) Then Exit Sub
           If WorksheetFunction.CountIf(Range("Деревья"), Target) = 0 Then
              lReply = MsgBox("Добавить введенное имя " & _
                             Target & " в выпадающий список?", vbYesNo + vbQuestion)
              If lReply = vbYes Then
                  Range("Деревья").Cells(Range("Деревья").Rows.Count + 1, 1) = Target
              End If
           End If
         End If
    End Sub
     
  8. Сохраняем, установив тип файла «с поддержкой макросов».
  9. Сообщение об ошибке.

  10. Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».

Макрос.

Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».

Нажмем «Да» и добавиться еще одна строка со значением «баобаб».

Выпадающий список в Excel с данными с другого листа/файла

Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.

  1. Делаем активной ячейку, куда хотим поместить раскрывающийся список.
  2. Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).

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

Как сделать зависимые выпадающие списки

Возьмем три именованных диапазона:

Три именованных диапазона.

Это обязательное условие. Выше описано, как сделать обычный список именованным диапазоном (с помощью «Диспетчера имен»). Помним, что имя не может содержать пробелов и знаков препинания.

  1. Создадим первый выпадающий список, куда войдут названия диапазонов.
  2. Список диапазонов.

  3. Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
  4. Таблица со списком.

  5. Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
  6. Второй раскрывающийся список.

    Выбор нескольких значений из выпадающего списка Excel

    Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.

    1. Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
    2. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("Е2:Е9")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              If Len(Target.Offset(0, 1)) = 0 Then
                  Target.Offset(0, 1) = Target
              Else
                  Target.End(xlToRight).Offset(0, 1) = Target
              End If
              Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub
       
    3. Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
    4. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("Н2:К2")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              If Len(Target.Offset(1, 0)) = 0 Then
                  Target.Offset(1, 0) = Target
              Else
                  Target.End(xlDown).Offset(1, 0) = Target
              End If
              Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub
       
    5. Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.

    6. Private Sub Worksheet_Change(ByVal Target As Range)
          On Error Resume Next
          If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
              Application.EnableEvents = False
              newVal = Target
              Application.Undo
              oldval = Target
              If Len(oldval) <> 0 And oldval <> newVal Then
                  Target = Target & "," & newVal
              Else
                  Target = newVal
              End If
              If Len(newVal) = 0 Then Target.ClearContents
              Application.EnableEvents = True
          End If
      End Sub

    Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.

    Выпадающий список с поиском

    1. На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
    2. Вставить ActiveX.

    3. Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
    4. Элемент ActiveX.

    5. Жмем «Свойства» – открывается перечень настроек.
    6. Свойства ActiveX.

    7. Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.

    Скачать пример выпадающего списка

    При вводе первых букв с клавиатуры высвечиваются подходящие элементы. И это далеко не все приятные моменты данного инструмента. Здесь можно настраивать визуальное представление информации, указывать в качестве источника сразу два столбца.

Содержание

  • 1 Открытие существующей книги
  • 2 Создание новой книги
  • 3 Обращение к открытой книге
  • 4 Как закрыть книгу Excel из кода VBA
    • 4.1 Сохранение всех рабочих книг
    • 4.2 Сохранение и закрытие всех рабочих книг
    • 4.3 Частичное сокрытие элементов рабочего листа
    • 4.4 Синхронизация выделенного диапазона на листах рабочей книги
    • 4.5 Решение(ия):
  • 5 Создать новую книгу в Excel VBA — примеры:
        • 5.0.0.1 Создать новую книгу
        • 5.0.0.2 Создание объекта для вновь созданной книги

Открытие книги Excel из кода VBA. Создание новой книги, присвоение ей имени. Обращение к открытой книге и закрытие. Методы Open, Add и Close объекта Workbooks.

  1. Открытие существующей книги
  2. Создание новой книги
  3. Обращение к открытой книге
  4. Как закрыть книгу Excel из кода VBA

Открытие существующей книги

Существующая книга открывается из кода VBA Excel с помощью метода Open:

  Workbooks.Open Filename:="D:test1.xls"  

или

  Workbooks.Open ("D:test1.xls")  

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

  If Dir("D:test1.xls") = "" Then      MsgBox "Файл не существует"  Else      MsgBox "Файл существует"  End If  

Или, если файл существует, можно сразу его открыть:

  If Dir("D:test1.xls") = "" Then      MsgBox "Файл не существует"  Else      Workbooks.Open Filename:="D:test1.xls"  End If  

Создание новой книги

Новая рабочая книга Excel создается в VBA с помощью метода Add:

  Workbooks.Add  

Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:

  Workbooks.Add  ActiveWorkbook.SaveAs Filename:="D:test2.xls"  

В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

Обращение к открытой книге

Обращение к активной книге:

  ActiveWorkbook  

Обращение к книге с выполняемым кодом:

  ThisWorkbook  

Обращение к книге по имени:

  Workbooks("test1.xls")  Workbooks("test2.xls")  

Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.

Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

  Workbooks("test1.xlsx").Close  

Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

  Workbooks("test1.xlsx").Close  SaveChanges:=False  

или

  Workbooks("test1.xlsx").Close  (False)  

Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

  Workbooks("test1.xlsx").Close  SaveChanges:=True  

или

  Workbooks("test1.xlsx").Close (True)  

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

Рис. 1. Столбцы и строки скрыты за исключением рабочего диапазона

Скачать заметку в формате Word или pdf, примеры в архиве (политика безопасности провайдера не позволяет загружать файлы Excel с поддержкой макросов)

Сохранение всех рабочих книг

Следующая процедура циклически просматривает все рабочие книги в коллекции Workbooks и сохраняет каждый файл, который сохранялся ранее.

Public Sub SaveAllWorkbooks()
    Dim Book As Workbook
    For Each Book In Workbooks
        If Book.Path "" Then Book.Save
    Next Book
End Sub

Обратите внимание на то, как используется свойство Path. Если для какой-либо рабочей книги свойство Path не задано, значит, файл еще не сохранялся (это новая рабочая книга). Данная процедура игнорирует такие рабочие книги и сохраняет только те из них, свойство Path которых имеет ненулевое значение.

Сохранение и закрытие всех рабочих книг

Следующая процедура циклически просматривает коллекцию Workbooks. Программа сохраняет и закрывает все рабочие книги.

Sub CloseAllWorkbooks()
    Dim Book As Workbook
    For Each Book In Workbooks
        If Book.Name ThisWorkbook.Name Then
            Book.Close savechanges:=True
        End If
    Next Book
    ThisWorkbook.Close savechanges:=True
End Sub

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

Частичное сокрытие элементов рабочего листа

В примере из этого раздела скрываются все строки и столбцы рабочего листа за исключением тех из них, которые находятся в текущем выделенном диапазоне (рис. 1).

Sub HideRowsAndColumns()
    Dim row1 As Long, row2 As Long
    Dim col1 As Long, col2 As Long
    If TypeName(Selection) "Range" Then Exit Sub
'   Если последняя строка либо последний столбец скрыты,
'   отобразить все и выйти
    If Rows(Rows.Count).EntireRow.Hidden Or _
        Columns(Columns.Count).EntireColumn.Hidden Then
        Cells.EntireColumn.Hidden = False
        Cells.EntireRow.Hidden = False
        Exit Sub
    End If
    row1 = Selection.Rows(1).Row
    row2 = row1 + Selection.Rows.Count — 1
    col1 = Selection.Columns(1).Column
    col2 = col1 + Selection.Columns.Count — 1
    Application.ScreenUpdating = False
    On Error Resume Next
'   Скрыть строки
    Range(Cells(1, 1), Cells(row1 — 1, 1)).EntireRow.Hidden = True
    Range(Cells(row2 + 1, 1), Cells(Rows.Count, _
        1)).EntireRow.Hidden = True
'   Скрыть столбцы
    Range(Cells(1, 1), Cells(1, col1 — 1)).EntireColumn.Hidden = True
    Range(Cells(1, col2 + 1), Cells(1, _
        Columns.Count)).EntireColumn.Hidden = True
End Sub

Чтобы показать все строки и столбцы, встаньте на перекрестие строк и столбцов (выделено красным на рис. 1), и пройдите по меню: Главная –> Ячейки –> Формат –> Скрыть или отобразить –> Отобразить строки. Повторите этот путь, чтобы отобразить столбцы (рис. 2).

Рис. 2. Показать все строки и столбцы

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

Синхронизация выделенного диапазона на листах рабочей книги

Если вы работаете с рабочими книгами, состоящими из нескольких листов, то, вероятно, знаете, что Excel не может «синхронизировать» листы в рабочей книге. Другими словами, не существует автоматического способа сделать так, чтобы все листы имели одинаковые выделенные диапазоны и верхние левые ячейки. Макрос VBA, показанный ниже, берет за основу активный рабочий лист и выполняет следующие действия со всеми остальными рабочими листами в книге:

  • выделяет тот же диапазон, что и в активном листе;
  • задает ту же левую верхнюю ячейку, что и на активном листе (рис. 3).

Рис. 3. Синхронизация выделенного диапазона на листах рабочей книги

Sub SynchSheets()
'   Дублирование выделенного диапазона активного листа
'   и верхней левой ячейки активного диапазона на всех листах
    If TypeName(ActiveSheet) "Worksheet" Then Exit Sub
    Dim UserSheet As Worksheet, sht As Worksheet
    Dim TopRow As Long, LeftCol As Integer
    Dim UserSel As String
    Application.ScreenUpdating = False
'   Запоминание текущего листа
    Set UserSheet = ActiveSheet
'   Сохранение сведений об активной ячейке
    TopRow = ActiveWindow.ScrollRow
    LeftCol = ActiveWindow.ScrollColumn
    UserSel = ActiveWindow.RangeSelection.Address
'   Циклический обход рабочих листов
    For Each sht In ActiveWorkbook.Worksheets
        If sht.Visible Then ' пропуск скрытых листов
            sht.Activate
            Range(UserSel).Select
            ActiveWindow.ScrollRow = TopRow
            ActiveWindow.ScrollColumn = LeftCol
        End If
    Next sht
'   Восстановление исходного положения
    UserSheet.Activate
    Application.ScreenUpdating = True
End Sub

По материалам книги Джон Уокенбах. Excel 2010. Профессиональное программирование на VBA. – М: Диалектика, 2013. – С. 348–351.

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

Sub Название_Макроса() 'Выделить диапазон который необходимо скопировать Range("A1:F52").Select 'Скопировать то, что выделено Selection.Copy ChDir "путь к папке где лежит файл в который необходимо скопировать" Workbooks.Open Filename:= "Название файла, который находится в папке, путь к которой указан выше" 'Выделить начальную ячейку в которую необходимо вставить скопированные данные Range("A6").Select 'Вставить данные ActiveSheet.Paste 'сохранить текущую книгу ActiveWorkbook.Save 'Закрыть книгу ActiveWorkbook.Close End Sub 

Вариант 2: В открывшейся книге запускаем макрос, чтобы он открыл нужную нам книгу, скопировал от туда нужные нам данные и вставил в нашу открытую книгу, закрыв файл из которого эти данные были скопированы

Sub Название_Макроса2() 'Открываем файл с которого нужно скопировать данные Workbooks.Open Filename:="C:Данные.xlsx"  'Скопировать нужный диапазон в открывшейся книге на листе 1 Workbooks("Данные.xlsx").Worksheets("Лист1").Range("A16:E16").Copy 'Активируем нужную нам книгу Workbooks("Книга1.xlsm").Activate  'Выделяем и вставляем скопированные данные в ячейку А1 ActiveWorkbook.Worksheets("Лист1").Range("A1").Select ActiveSheet.Paste  'Закрываем книгу откуда мы скопировали данные Workbooks("Данные.xlsx").Close End Sub 

Еще пример — Скопировать диапазоны данных из активной открытой книги Excel нескольких листов (в нашем примере 3-х листов) в другую книгу, которая хранится в определенном месте. Данные будут вставлены как значения, плюс будут перенесены форматы ячеек.

Sub Копируем_листы_в_другую_книгу() Dim bookconst As Workbook Dim abook As Workbook Set abook = ActiveWorkbook 'присваиваем перменную активной книге Set bookconst = Workbooks.Open("C:UsersUserDesktop1.xlsx") 'присваиваем перменную книге куда необходимо копировать данные  'переходим в активную книгу откуда необходимо скопировать данные abook.Worksheets("Лист1").Activate Range("A1:I23").Copy 'копируем определенный диапазон листа, укажите свой диапазон bookconst.Worksheets("Лист1").Activate 'активируем лист куда необходимо вставить данные Range("A1:I23").Select 'встаем на ячейку А1 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем только форматы ячеек Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False 'второй лист abook.Worksheets("Лист2").Activate Range("A1:I23").Copy bookconst.Worksheets("Лист2").Activate Range("A1:I23").Select 'выделяем диапазон Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем только форматы ячеек Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False 'третий лист abook.Worksheets("Лист3").Activate Range("A1:I23").Copy bookconst.Worksheets("Лист3").Activate Range("A1:I23").Select 'выделяем диапазон Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем только форматы ячеек Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False 'сохранить текущую книгу bookconst.Save 'Закрыть книгу bookconst.Close abook.Activate End Sub 

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

Спасибо за внимание.

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

Решение(ия):

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

Создать новую книгу в Excel VBA — примеры:

  • Создать новую книгу
  • Создание объекта для вновь созданной рабочей книги
Создать новую книгу

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

Код:

Sub AddNewWorkbook1()  'Добавление новой рабочей книги  Workbooks.Add  'Сохранение рабочей книги  ActiveWorkbook.SaveAs "C:WorkbookName.xls"  'OR  ActiveWorkbook.SaveAs Filename:="C:WorkbookName1.xls"  End Sub  

Объяснение:

  1. Метод добавления рабочей книги  добавит новую книгу
  2. Сохранить как рабочую книгу метод сохранит активную книгу в определенном месте с указанным именем файла

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

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

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

    Код:

    sub AddNewWorkbook2()  Dim wkb as Workbook  'Добавление новой рабочей книги  Set wkb = Workbooks.Add  'Сохранение рабочей книги  wkb.SaveAs "C:WorkbookName.xls"  'OR  wkb.SaveAs Filename:="C:WorkbookName1.xls"  End Sub  

    Вывод:

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

    Инструкции:

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

      Открытие книги Excel из кода VBA. Проверка существования книги. Создание новой книги, обращение к открытой книге и ее закрытие. Методы Open, Add и Close.

      Открытие существующей книги

      Существующая книга открывается из кода VBA Excel с помощью метода Open:

      Workbooks.Open Filename:=«D:test1.xls»

      или

      Workbooks.Open («D:test1.xls»)

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

      Проверка существования файла

      Проверить существование файла можно с помощью функции Dir. Проверка существования книги Excel:

      If Dir(«D:test1.xls») = «» Then

          MsgBox «Файл не существует»

      Else

          MsgBox «Файл существует»

      End If

      Или, если файл (книга Excel) существует, можно сразу его открыть:

      If Dir(«D:test1.xls») = «» Then

          MsgBox «Файл не существует»

      Else

          Workbooks.Open Filename:=«D:test1.xls»

      End If

      Создание новой книги

      Новая рабочая книга Excel создается в VBA с помощью метода Add:

      Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:

      Workbooks.Add

      ActiveWorkbook.SaveAs Filename:=«D:test2.xls»

      В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

      Обращение к открытой книге

      Обращение к активной книге:

      Обращение к книге с выполняемым кодом:

      Обращение к книге по имени:

      Workbooks(«test1.xls»)

      Workbooks(«test2.xls»)

      Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.

      Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

      Workbooks(«test1.xlsx»).Close

      Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

      Workbooks(«test1.xlsx»).Close  SaveChanges:=False

      или

      Workbooks(«test1.xlsx»).Close  (False)

      Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

      Workbooks(«test1.xlsx»).Close  SaveChanges:=True

      или

      Workbooks(«test1.xlsx»).Close (True)


      Фразы для контекстного поиска: открыть книгу, открытие книги, создать книгу, создание книги, закрыть книгу, закрытие книги, открыть файл Excel, открытие файла Excel, существование книги, обратиться к открытой книге.


      Понравилась статья? Поделить с друзьями:
    1. Как создавать буклеты в word
    2. Как соединить ячейки в excel с текстом без потери данных
    3. Как создавать буклет в word
    4. Как соединить ячейки в excel с разделителем
    5. Как создавать брошюры в word