Styr Word från Excel med VBA i Microsoft Excel 2010

Anonim

Många gånger måste du kopiera data från en excel -fil till ett word -dokument. Du kan göra detta med ett makro mycket enkelt. Makrot öppnar ett nytt / befintligt word doc, kopierar innehållet och sparar och stänger sedan word doc. Får se hur detta görs.

Koden som du kan använda är -

Alternativ Explicit

Sub CreateNewWordDoc ()
Dim i As Integer
Dim wrdApp som objekt, wrdDoc som objekt
Ange wrdApp = CreateObject (“Word.Application”)
wrdApp.Visible = Sant
Ställ in wrdDoc = wrdApp.Documents.Add
Med wrdDoc
För i = 1 till 100
.Content.InsertAfter "Här är ett exempel på testlinje #" & i
.Content.InsertParagraphAfter
Nästa i
Om Dir ("B: \ Test \ MyNewWordDoc.docx") "" "Döda sedan" B: \ Test \ MyNewWordDoc.docx "
.SaveAs (“B: \ Test \ MyNewWordDoc.docx”)
.Stänga
Sluta med
wrdApp.Avsluta
Ange wrdDoc = Ingenting
Ange wrdApp = Ingenting
Avsluta Sub

För att kopiera ovanstående kod till din fil,

  • Tryck på Alt + F11 på tangentbordet
  • På vänster sida ser du Microsoft Excel -objekt
  • Högerklicka och välj Infoga
  • Klicka sedan på Modul
  • Kopiera koden till kodfönstret till höger

Nu får vi se hur den här koden fungerar -

Först deklarerar vi variablerna vi behöver -i som heltal för att öka varje rad eftersom den fylls i från excel -filen till ordet doc. Sedan är de två objektvariablerna wrdApp och wrdDoc, wrdApp är Word Application -objektet och wrdDoc är Word Document -objektet.

Ange wrdApp = CreateObject (“Word.Application”)

Om Word redan körs i ditt system,CreateObject kommer att skapa en ny instans av Word. Så den här raden tilldelar objektvariabeln wrdApp till Word -applikationen som du kan använda senare i koden.

wrdApp.Visible = Sant

Den nyskapade instansen av Word kommer inte att synas när den skapas. För att göra det synligt måste du ställa in wrdApp.Visible = True så att det är synligt.

Ställ in wrdDoc = wrdApp.Documents.Add

Vi skapade den nya förekomsten av ordprogrammet men vi har inte öppnat ett tomt orddokument ännu. Så det här kommandot öppnar ett nytt word -dokument. Objektet wrdDoc har tilldelats detta nya dokument så att vi kan använda det senare i koden.

Om du inte vill öppna en ny arbetsbok utan öppna en befintlig arbetsbok kan du ersätta den här raden med

Ställ in wrdDoc = wrdApp.Documents.Open (“B: \ My Documents \ WordDocs \ Doc1.docx”)

Denna rad öppnar ett befintligt word -dokument som har sparats på den angivna platsen.

Med wrdDoc… .End With

Detta är vår "With" -slinga som fungerar helt med wrdDoc -objektet. När du har öppnat den här slingan behöver du inte upprepa texten “wrdDoc” igen i den här slingan. Du kan börja direkt med punkten (“.”) Före objekt som rör wrdDoc. Denna slinga slutar med Sluta med påstående. När Slut med -satsen har matats in kan du inte hänvisa till objekten efter wrdDoc med bara ".".

För i = 1 till 100
.Content.InsertAfter "Här är ett exempel på testlinje #" & i
.Content.InsertParagraphAfter
Nästa i

Detta är "For" -slingan. Den ökar från 1 till 100 och vid varje steg infogar den en rad med texten "Här är ett exempel på testrad #" och lägger sedan till steget. Sedan infogar det en radbrytning / styckebrytning så att nästa ökning visas på nästa rad, som ett nytt stycke.

Så denna process kommer att upprepas 100 gånger, eftersom for -loop -tillstånden för i = 1 till 100. Detta är utgången du kommer att få -

Om Dir (“B: \ Test \ MyNewWordDoc.Docx”) “” ”Döda sedan“ B: \ Test \ MyNewWordDoc.docx ”

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

.Stänga

När "For" -slingan är klar kontrollerar koden om filen MyNewWordDoc.docx finns. Om det gör det kommer det att raderas. Och sedan kommer den att spara den nya filen med samma namn och stänga filen.

wrdApp.Avsluta

Ange wrdDoc = Ingenting
Ange wrdApp = Ingenting

Ordprogrammet stängs och sedan släpps de två objekten som skapades eller ställs till "ingenting", så att minnet som upptas av dessa objekt frigörs. Detta är hela koden som tar hand om att kopiera innehåll från excel till word.