Управлявайте Word от Excel с помощта на VBA в Microsoft Excel 2010

Anonim

Много пъти трябва да копирате данни от Excel файл в Word документ. Можете да направите това с макрос много лесно. Макросът ще отвори нов / съществуващ word doc, ще копира съдържанието и след това ще запише и затвори думата doc. Да видим как се прави това.

Кодът, който можете да използвате е -

Опция Изрично

Sub CreateNewWordDoc ()
Dim i As Integer
Затъмнете wrdApp като обект, wrdDoc като обект
Задайте wrdApp = CreateObject („Word.Application“)
wrdApp.Visible = Вярно
Задайте wrdDoc = wrdApp.Documents.Add
С wrdDoc
За i = 1 до 100
.Content.Insert След „Тук е примерна тестова линия #“ & i
.Content.InsertParagraphAfter
Следва i
Ако Dir ("B: \ Test \ MyNewWordDoc.docx") "" След това убийте "B: \ Test \ MyNewWordDoc.docx"
.SaveAs („B: \ Test \ MyNewWordDoc.docx“)
.Близо
Край с
wrdApp.Quit
Задайте wrdDoc = Нищо
Задайте wrdApp = Нищо
End Sub

За да копирате горния код във вашия файл,

  • Натиснете Alt + F11 на клавиатурата
  • От лявата страна ще видите Microsoft Excel Objects
  • Щракнете с десния бутон и изберете Вмъкване
  • След това щракнете върху Модул
  • Копирайте кода в кодовия прозорец вдясно

Сега нека видим как работи този код -

Първо декларираме нужните ни променливи -i като цяло число за увеличаване на всеки ред, тъй като той се попълва от Excel файла до думата doc. Тогава двете променливи на обекта wrdApp и wrdDoc, wrdApp е обектът на Word Application, а wrdDoc е обектът на Word Document.

Задайте wrdApp = CreateObject („Word.Application“)

Ако Word вече работи във вашата система,CreateObject ще създаде нов екземпляр на Word. Така че този ред присвоява обектната променлива wrdApp на Word приложението, което можете да използвате по -късно в кода.

wrdApp.Visible = Вярно

Новосъздаденият екземпляр на Word няма да се вижда, когато бъде създаден. За да стане видимо, трябва да зададете wrdApp.Visible = True, така че да се вижда.

Задайте wrdDoc = wrdApp.Documents.Add

Създадохме новия екземпляр на приложението word, но все още не сме отворили документ с празна дума. Така че тази команда ще отвори нов word документ. Обектът wrdDoc е присвоен на този нов документ, така че можем да го използваме по -късно в кода.

Ако не искате да отваряте нова работна книга, но отваряте съществуваща работна книга, тогава можете да замените този ред с

Задайте wrdDoc = wrdApp.Documents.Open („B: \ Моите документи \ WordDocs \ Doc1.docx“)

Този ред отваря съществуващ документ на Word, който е записан на посоченото място.

С wrdDoc …. Край с

Това е нашият цикъл „С“, който ще работи изцяло с обекта wrdDoc. След като отворите този цикъл, не е нужно да повтаряте отново текста „wrdDoc“ в този цикъл. Можете директно да започнете с точката (“.”) Преди обекти, свързани с wrdDoc. Този цикъл завършва с Край с изявление. След като операторът End With е въведен, не можете да се позовавате на обектите след wrdDoc само с „.“.

За i = 1 до 100
.Content.Insert След „Ето един примерен тестов ред #“ & i
.Content.InsertParagraphAfter
Следва i

Това е цикълът „За“. Той се увеличава от 1 до 100 и при всяко увеличение, той вмъква ред с текст „Ето пример за изпитателен ред #“ и след това добавя номера на увеличението. След това той вмъква прекъсване на ред / прекъсване на абзац, така че следващото увеличение да се появи на следващия ред, като нов параграф.

Така че този процес ще се повтори 100 пъти, тъй като for цикъл състояния For i = 1 до 100. Това е изходът, който ще получите -

Ако Dir ("B: \ Test \ MyNewWordDoc.Docx") "" След това убийте "B: \ Test \ MyNewWordDoc.docx"

.SaveAs („B: \ Test \ MyNewWordDoc.docx“)

.Близо

След като цикълът „За“ приключи, кодът ще провери дали файлът MyNewWordDoc.docx съществува. Ако го направи, ще го изтрие. И тогава той ще запише новия файл със същото име и ще затвори файла.

wrdApp.Quit

Задайте wrdDoc = Нищо
Задайте wrdApp = Нищо

Думата приложение се затваря и след това 2 -те създадени обекта ще бъдат освободени или настроени на „Нищо“, така че паметта, заета от тези обекти, да бъде освободена. Това е целият код, който се грижи за копиране на съдържание от excel в word.