Как да вмъкнете таблицата в Excel в Word с VBA
офис на Microsoft Майкрософт Уърд Microsoft Microsoft Excel Герой Дума / / 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 функция, която ще се стартира, когато щракнете върху бутона „Копиране в Word“.
Изберете Разработчик от менюто и изберете Insert от групата Controls в лентата. В падащия списък изберете бутона за управление под ActiveX контроли.
След това нарисувайте командния бутон от дясната страна на листа. Можете да промените надписа на „Копиране в Word“, като щракнете с десния бутон върху бутона и изберете Имоти. Променете текста на надписите и можете да използвате Font, за да актуализирате размера и стила на шрифта.
Забележка: Ако не виждате Разработчик в менюто си Excel, след което го добавете. Изберете досие, Настроики, Персонализирайте лентатаи изберете Всички команди от лявото падащо меню. След това се движете Разработчик от левия панел вдясно и изберете OK, за да завършите.
Напишете VBA копиране и поставяне
Сега сте готови да започнете да пишете VBA код. За да започнете, щракнете двукратно върху новото Копиране в Word бутон за отваряне на прозореца на редактора на кодове.
Трябва да видите подпрограма, наречена Commandbutton1_Click (), както е показано по-долу.
Ще искате да копирате всеки раздел от код по-долу. Преди да започнете кодирането, за да контролирате Word на компютъра си чрез VBA, ще трябва да активирате референтната библиотека на Microsoft Word.
В редактора на кода изберете Инструменти от менюто и изберете Препратки. В списъка с налични справки превъртете надолу и активирайте Обектна библиотека на Microsoft Word 16.0.
Изберете ОК и сте готови да започнете кодирането. Ще прегледаме всеки раздел код наведнъж, така че да разберете какво прави този код и защо.
Първо, трябва да създадете променливите и обектите, които ще държат диапазона и да ви позволят да контролирате приложението Word.
Dim tblRange като Excel. диапазон
Dim WordApp като Word. Приложение
Dim WordDoc като Word. документ
Dim WordTable като Word. маса
Следващият ред код избира конкретен диапазон от клетки и го записва в обект на Excel Range в VBA.
Задайте tblRange = ThisWorkbook. Работни листове ( "Sheet1") обхват. ( "A2: G44")
След това искате да проверите дали приложението Word вече е отворено на компютъра. Можете да се обърнете към приложението Word, като използвате специална справка за клас, с командата VBA GetObject, за да постигнете това. Ако Word вече не е отворен, следващият ред ще го стартира с помощта на функцията CreateObject. Редът „On Error Resume Next“ предотвратява всяка грешка от първата функция GetObject (ако Word вече не е отворена) да спре изпълнението на следващия ред в програмата.
On Error Resume Next
Задайте WordApp = GetObject (class: = "Word. Приложение")
Ако WordApp е нищо, тогава задайте WordApp = CreateObject (class: = "Word. Приложение")
Сега, когато приложението Word се стартира, искате да го направите видимо за потребителя и да го активирате за използване.
WordApp. Видимо = Вярно
WordApp. Активирате
След това искате да създадете нов документ в приложението Word.
Задайте WordDoc = WordApp. Документи. Добави
Накрая ще копирате и залепите диапазона от клетки в нова таблица в документа на Word.
tblRange. копие
WordDoc. Параграфи (1). PasteExcelTable _
LinkedToExcel: = Грешно, _
WordFormatting: = Грешно, _
RTF: = False
Превключвателите в горната функция ще вмъкнат несвързана таблица, използвайки източник на Excel форматиране (не Word форматиране) и не използвайки формат с богат текст.
И накрая, за да се справите с диапазоните на Excel, които са по-широки от документа, ще трябва да затворите автоматично новата таблица, така че да се побира в границите на новия ви документ на Word.
Задайте WordTable = WordDoc. Маси (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
И сега сте готови! Запишете файла като макро-активиран Excel файл (.xlsm разширение). Затворете редактора, запазете отново оригиналния файл в Excel и след това щракнете върху вашия команден бутон, за да видите кода си в действие!
Напишете резултатите от Excel в таблица с думи с VBA
В този следващ раздел ще напишете VBA код, който извършва изчисления на стойности в Excel, и ги запише в таблица в Word.
За този пример ще изтеглим данни на стойност 10 реда, ще изчислим и ще запишем резултатите в таблица в документ на Word. Също така, оригиналната таблица ще съдържа четири колони, а VBA кодът ще изтегли първите десет реда данни от този диапазон.
Точно както в последния раздел, ние ще прегледаме всеки раздел наведнъж, така че да разберете какво прави този код и защо.
Първо, създайте променливите и обектите, които ще съхраняват данните и ви позволяват да пишете в приложението Word.
Dim tblRange като Excel. диапазон
Dim WrdRange като дума. диапазон
Dim WordApp като Word. Приложение
Dim WordDoc като Word. документ
Dim WordTable като Word. маса
Dim intRows
Затъмнение intColumns
Dim strDate като низ
Dim strItem като струнен
Несъответствия като вариант
Dim intCost като вариант
Dim intTotal Като вариант
След това задайте общите колони и редове, които искате да прочетете от обхвата на Excel.
intNoOfRows = 10
intNoOfColumns = 5
Повторете същия код като последния раздел, който ще отвори Word, ако той вече не е отворен.
On Error Resume Next
Задайте WordApp = GetObject (class: = "Word. Приложение")
Ако WordApp е нищо, тогава задайте WordApp = CreateObject (class: = "Word. Приложение")
WordApp. Видимо = Вярно
WordApp. Активирате
Задайте WordDoc = WordApp. Документи. Добави
Следващите четири реда създават таблица вътре в току-що отворения документ на Word.
Задайте WrdRange = WordDoc. Обхват (0, 0)
WordDoc. Маси. Добавете WrdRange, intNoOfRows, intNoOfColumns
Задайте WordTable = WordDoc. Маси (1)
WordTable. Граници. Активиране = True
И накрая, следният цикъл ще извърши тези действия:
- За всеки ред поставете датата, артикула, единиците и цената на поръчката в променливи
- Изчислете единица време разход (обща продажба) и го съхранява в променлива
- За всяка колона напишете стойностите в таблицата на Word, включително изчислената обща продажба в последната клетка
- Преминете към следващия ред и повторете процедурата по-горе
Ето как изглежда този код:
За i = 1 За intNoOfRows
За j = 1 За intNoOfColumns
Ако j = 1 Тогава
strDate = tblRange. Клетки (i + 1, j) .Value
strItem = tblRange. Клетки (i + 1, j + 1) .Value
intUnits = Val (tblRange. Клетки (i + 1, j + 2) .Value)
intCost = Val (tblRange. Клетки (i + 1, j + 3) .Value)
intTotal = intUnits * intCost
Край Ако
Изберете Дело j
Случаят е = 1
WordTable. Клетка (i, j). Ранг. Text = strDate
Случаят е = 2
WordTable. Клетка (i, j). Ранг. Text = strItem
Случаят е = 3
WordTable. Клетка (i, j). Ранг. Text = intUnits
Случаят е = 4
WordTable. Клетка (i, j). Ранг. Текст = intCost
Случаят е = 5
WordTable. Клетка (i, j). Ранг. Текст = intTotal
Дело друго
Избор на край
Следващия
Следващия
Функцията "Клетки" в първата част дърпа стойности на клетките извън Excel. Клетките (x, y) означава, че тя дърпа стойността на клетката в ред x и колона y.
Функцията „Cell“ в последната част записва в клетките в таблицата на Word, използвайки същите задания на ред и колони.
След като запазите и стартирате този VBA код, ще видите резултатите в новосъздадения си документ на Word.
Както можете да видите, не е твърде сложно да се създаде полезна автоматизация между Excel и Word. Просто е въпрос на разбиране как работят различните „обекти“, които могат да създават и контролират както Excel, така и Word приложенията на вашия компютър.