VBA Excel. Вставка таблицы Excel в документ Word

Вставка таблицы Excel в документ Word с помощью кода VBA Excel. Метод Selection.PasteExcelTable: синтаксис, параметры, пример использования.

Метод Selection.PasteExcelTable

Метод Range.Paste, использующийся в VBA Word для вставки в документ таблиц, скопированных в буфер обмена из другого документа Word, не применим для вставки в документ таблиц, скопированных из книги Excel. Для этих целей используется метод Selection.PasteExcelTable.

Selection.PasteExcelTable — это метод, предназначенный для вставки Excel-таблицы из буфера обмена в документ Word и ее форматирования в соответствии с заданными параметрами.

Синтаксис

Expression — переменная, представляющая объект Selection. В том числе, это может быть курсор или закладка.

Параметры

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

Параметр Описание
LinkedToExcel True — вставленная таблица связывается с исходным файлом Excel, чтобы изменения, внесенные в файл Excel, отображались в Microsoft Word.
False — связь между вставленной таблицей и таблицей в исходном файле не устанавливается.
WordFormatting True — вставленная таблица будет отформатирована как таблица документа Word.
False — вставленная таблица будет отформатирована в соответствии с исходным файлом Excel.
RTF True — Excel-таблица будет вставлена в расширенном текстовом формате (RTF).
False — Excel-таблица будет вставлена в формате HTML-таблицы.

Пример вставки Excel-таблицы

Допустим, у нас есть таблица Excel, начинающаяся с ячейки A1 (или с любой другой), и нам необходимо скопировать эту таблицу в существующий документ Word, вставив ее на место закладки "Закладка1".

Решение:

Если необходимо таблицу вставить в конец документа, строку

следует заменить на


Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

13 комментариев для “VBA Excel. Вставка таблицы Excel в документ Word”

  1. Алексей

    Здравствуйте, Евгений. Спасибо за статью. То, что надо. Только небольшую заметку надо по поводу подключения библиотеки (Tools -> References -> Microsoft Word xx.0 Object Library), а то будет появляться сообщение (User-defined type is not defined). И ещё я сделал для связи:

    подскажите как сделать во вставленной таблице все тексты и значения по центру (повторюсь, в таблице количество строк меняется, поэтому диапазон должен быть ко всей таблице)? Или лучше это сделать макрорекордером ворд?
    Тут же вопрос: можно ли обновить документ не открывая его? (я предполагаю уже макросами ворда надо пользоваться).

    1. Алексей

      Отвечу сам себе по поводу вставленной таблицы в ворде: принимает формат того абзаца на котором закладка. Шаблон ворда поправил теперь как надо встаёт таблица. Но есть «но». Дальнейшее не имеет отношения к эксель, но я опишу для информативности. Шаблон в Ворде у меня построен на Слиянии так же из другого документа Эксель в шаблон Ворд, а таблица которую вставляю из другого документа Эксель, так вот при вставке Нашей Таблицы в шаблоне Ворд «теряется» исходный документ Слияния. Наверно «действия» вставки таблицы форматирует ссылку на документ Слияния.

  2. Огромное спасибо за пример! То что нужно! Но столкнулся с проблемой, которую пока не могу решить: у меня в экселе несколько листов из которых нужно скопировать таблицы и вставить вместо соответствующих закладок в ворд. Так вот, после копирования первой таблицы и вставки ее на место первой закладки, программа по необъяснимой для меня причине вставляет скопированную таблицу вместо всех закладок. Названия закладок разные, но почему-то они заменяются все. Вот фрагмент кода:

    1. Евгений

      Добрый день, Максим!
      Попробуйте переопределить закладки. Выделите в документе текст закладки без пробела в конце и снова вставьте закладку с тем же именем. И так со всеми закладками.

  3. Здравствуйте!
    При использовании кода:

    почему-то не сохраняется форматирование таблицы как в Excel, при вставке таблицы «руками» через «Сохранить исходное форматирование» все копируется, как надо. Подскажите как поправить код?
    Как прикрепить скрин не знаю.

      1. Евгений, здравствуйте!
        Спасибо большое за подсказку!
        К сожалению не помогло(( Таблица вставляется «криво». Даже уже и не знаю как быть.

      2. Алексей

        Здравствуйте, Евгений. Как можно из разных документов эксель в один ворд вставлять таблицы по закладкам. По отдельности для каждого документа ваш код работает хорошо. Пробовал переделать код из урока «VBA Excel. Bookmarks – закладки в документе Word» 5-й части, не получилось. Посмотрел, что вам писал здесь «Максим от 14.04.2022 в 17:06» у меня похожая ситуация, но у меня разные файлы эксель и «Максим» выложил часть кода. Если сможете, помогите.

        1. Евгений

          Здравствуйте, Алексей!
          Примерный код будет таким:

          Код расположен в отдельной книге «Книга1.xlsm». Все книги должны быть открыты.

          1. Алексей

            Здравствуйте, Евгений. Это замечательно с разных книг вставить в один документ. А как начать работу с открытым документом ворд? У меня задача сделать мини отчёт в ворд: 1. Из 1-го файла эксель сделать 1-ую страницу в ворд и часть отчёта, файл эксель я закрываю (чтобы не путаться). 2. Из 2-го файла эксель сделать 2-ую часть отчёта в том же документе ворд. Первая часть задачи выполняется и остаётся открытым файл ворд. Вторую часть задачи не могу осилить.
            Ещё попробую перефразировать, из другого файла эксель макрос на вставку в уже открытый файл ворд.
            Думал через этот код выполнить :

            но здесь не проект.

            1. Евгений

              Добрый день, Алексей!
              Это проблема тоже решаема:

              Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке.

          2. Алексей

            Здравствуйте, Евгений. Спасибо! Соединил ваши макросы в один и получил то, что надо.

Добавить комментарий

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