Как вставить таблицу Excel в Word с помощью VBA
Microsoft Office Microsoft Word Microsoft Майкрософт Эксель Герой Word / / April 29, 2020
Последнее обновление
VBA - это очень мощный инструмент, который можно использовать для автоматизации большой работы между несколькими приложениями Microsoft Office. Одним из распространенных действий, которые вы можете автоматизировать с помощью VBA, является вставка таблицы Excel в документ Word.
Visual Basic для приложений (VBA) - очень мощный инструмент, который можно использовать для автоматизации большой работы между несколькими приложениями Microsoft Office. Одним из распространенных действий, которые вы можете автоматизировать с помощью VBA, является вставка таблицы Excel в документ Word.
Есть два способа сделать это. Первый - это автоматическое копирование и вставка существующего диапазона из Excel в новую таблицу в документе Word. Второй - выполнение расчетов в Excel, создание новой таблицы в Word и запись результатов в таблицу.
Вы могли бы попытаться записать макрос чтобы сделать это, но макросы позволят вам только автоматизировать задачи внутри Word. В этой статье вы узнаете, как писать код VBA для автоматизации этих действий между Excel и Word.
Скопируйте и вставьте диапазон Excel в Word с VBA
В обоих примерах мы начнем с образца электронной таблицы Excel. Этот образец представляет собой список заказов на покупку различных продуктов.
Допустим, вы хотите скопировать и вставить весь диапазон ячеек на этом листе в документ Word. Для этого вам нужно написать функцию VBA, которая будет запускаться при нажатии кнопки «Копировать в слово».
Выбрать разработчик из меню и выберите Вставить из группы управления на ленте. В раскрывающемся списке выберите элемент управления «Кнопка» в разделе «Элементы управления ActiveX».
Затем нарисуйте командную кнопку на правой стороне листа. Вы можете изменить заголовок на «Копировать в Word», щелкнув правой кнопкой мыши по кнопке и выбрав свойства. Измените текст заголовка, и вы можете использовать шрифт для обновления размера и стиля шрифта.
Запись: Если вы не видите разработчик в меню Excel, затем добавьте его. Выбрать файл, Опции, Настроить лентуи выберите Все команды из выпадающего списка слева. Тогда двигайся разработчик от левой панели вправо и выберите OK, чтобы закончить.
Напишите копию и вставьте код VBA
Теперь вы готовы начать писать код VBA. Чтобы начать, дважды щелкните новый Копировать в Word кнопка, чтобы открыть окно редактора кода.
Вы должны увидеть подпрограмму с именем Commandbutton1_Click (), как показано ниже.
Вы хотите скопировать каждый раздел кода ниже. Прежде чем приступить к написанию кода, для управления Word на вашем компьютере с помощью VBA необходимо включить справочную библиотеку Microsoft Word.
В редакторе кода выберите инструменты из меню и выберите Ссылки. В списке доступных ссылок прокрутите вниз и включите Библиотека объектов Microsoft Word 16.0.
Выберите OK, и вы готовы начать кодирование. Мы рассмотрим каждый раздел кода за раз, чтобы вы поняли, что делает этот код и почему.
Во-первых, вам нужно создать переменные и объекты, которые будут содержать диапазон и позволять вам управлять приложением Word.
Дим tblRange As Excel. Спектр
Dim WordApp As Word. заявка
Тусклый WordDoc как Word. Документ
Тусклый WordTable как слово. Таблица
Следующая строка кода выбирает определенный диапазон ячеек и сохраняет его в объекте диапазона Excel в VBA.
Установите tblRange = ThisWorkbook. Worksheets ( "Лист1") Диапазон. ( "A2: G44")
Затем вы хотите проверить, открыто ли приложение Word на компьютере. Для этого вы можете ссылаться на приложение Word, используя специальную ссылку «класс» с командой VBA GetObject. Если Word еще не открыт, то следующая строка запустит его с помощью функции CreateObject. Строка «On Error Resume Next» предотвращает любую ошибку первой функции GetObject (если Word еще не открыт) останавливать выполнение следующей строки в программе.
При ошибке возобновить следующее
Установите WordApp = GetObject (class: = "Word. Заявка")
Если WordApp - ничто, тогда установите WordApp = CreateObject (class: = "Word. Заявка")
Теперь, когда приложение Word запущено, вы хотите сделать его видимым для пользователя и активировать его для использования.
WordApp. Visible = True
WordApp. Активировать
Далее вы хотите создать новый документ в приложении Word.
Установите WordDoc = WordApp. Документы. Добавить
Наконец, вы скопируете и вставите диапазон ячеек в новую таблицу в документе Word.
tblRange. копия
WordDoc. Абзацы (1). Диапазон. PasteExcelTable _
LinkedToExcel: = False, _
WordFormatting: = False, _
RTF: = False
Переключатели в вышеупомянутой функции вставят несвязанную таблицу, используя исходное форматирование Excel (не форматирование Word) и не используя расширенный текстовый формат.
Наконец, для работы с диапазонами Excel, которые шире, чем документ, вам нужно автоматически установить новую таблицу, чтобы она соответствовала полям вашего нового документа Word.
Установите WordTable = WordDoc. Столы (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
И теперь вы сделали! Сохраните файл как файл Excel с поддержкой макросов (расширение .xlsm). Закройте редактор, снова сохраните исходный файл Excel, а затем нажмите командную кнопку, чтобы увидеть код в действии!
Записать результаты Excel в таблицу Word с помощью VBA
В следующем разделе вы напишите код VBA, который выполняет вычисления значений в Excel и записывает их в таблица в ворде.
Для этого примера мы возьмем данные на 10 строк, вычислим и запишем результаты в таблицу в документе Word. Кроме того, исходная таблица будет содержать четыре столбца, а код VBA извлечет первые десять строк данных из этого диапазона.
Как и в последнем разделе, мы рассмотрим каждый раздел за раз, чтобы вы понимали, что делает этот код и почему.
Сначала создайте переменные и объекты, которые будут содержать данные и позволят вам писать в приложение Word.
Дим tblRange As Excel. Спектр
Dim WrdRange As Word. Спектр
Dim WordApp As Word. заявка
Тусклый WordDoc как Word. Документ
Тусклый WordTable как слово. Таблица
Dim intRows
Dim intColumns
Dim strDate As String
Dim strItem As String
Dim intUnits As Variant
Dim intCost As Variant
Dim IntTotal As Variant
Затем установите общее количество столбцов и строк, которые вы хотите прочитать из диапазона Excel.
intNoOfRows = 10
intNoOfColumns = 5
Повторите тот же код, что и в последнем разделе, который откроет Word, если он еще не открыт.
При ошибке возобновить следующее
Установите WordApp = GetObject (class: = "Word. Заявка")
Если WordApp - ничто, тогда установите WordApp = CreateObject (class: = "Word. Заявка")
WordApp. Visible = True
WordApp. Активировать
Установите WordDoc = WordApp. Документы. Добавить
Следующие четыре строки создают таблицу внутри вновь открытого документа Word.
Установите WrdRange = WordDoc. Диапазон (0, 0)
WordDoc. Таблицы. Добавить WrdRange, intNoOfRows, intNoOfColumns
Установите WordTable = WordDoc. Столы (1)
WordTable. Границы. Enable = True
Наконец, следующий цикл выполнит эти действия:
- Для каждой строки поместите дату заказа, позицию, единицы и стоимость в переменные
- Рассчитайте стоимость за единицу времени (общую продажу) и сохраните ее в переменной
- Для каждого столбца запишите значения в таблицу Word, включая рассчитанный общий объем продаж в последней ячейке.
- Перейдите к следующему ряду и повторите процедуру выше
Вот как выглядит этот код:
Для i = 1 до intNoOfRows
Для j = 1 до intNoOfColumns
Если j = 1, то
strDate = tblRange. Клетки (i + 1, j). Значение
strItem = tblRange. Клетки (i + 1, j + 1). Значение
intUnits = Val (tblRange. Клетки (i + 1, j + 2). Значение)
intCost = Val (tblRange. Клетки (i + 1, j + 3). Значение)
intTotal = intUnits * intCost
End If
Выберите Случай j
Дело = 1
WordTable. Cell (i, j) .Range. Text = strDate
Дело = 2
WordTable. Cell (i, j) .Range. Text = strItem
Дело = 3
WordTable. Cell (i, j) .Range. Text = intUnits
Дело = 4
WordTable. Cell (i, j) .Range. Text = intCost
Дело = 5
WordTable. Cell (i, j) .Range. Text = intTotal
Дело остальное
Конец выбора
следующий
следующий
Функция «Клетки» в первой части тянет значения ячеек вне Excel. Ячейки (x, y) означают, что он извлекает значение ячейки в строке x и столбце y.
Функция «Ячейка» в последней части записывает данные в ячейки таблицы Word, используя те же назначения строк и столбцов.
После сохранения и запуска этого кода VBA вы увидите результаты в только что созданном документе Word.
Как видите, не так сложно создать полезную автоматизацию между Excel и Word. Это просто вопрос понимания того, как работают различные «объекты», которые могут создавать и контролировать приложения Excel и Word на вашем компьютере.