Styr Word fra Excel ved hjælp af VBA i Microsoft Excel 2010

Anonim

Mange gange skal du kopiere data fra en excel -fil til et word -dokument. Du kan meget let gøre dette med en makro. Makroen vil åbne et nyt / eksisterende word doc, kopiere indholdet og derefter gemme og lukke word doc. Lad os se, hvordan dette gøres.

Koden, du kan bruge, er -

Mulighed eksplicit

Sub CreateNewWordDoc ()
Dim i As Integer
Dim wrdApp som objekt, wrdDoc som objekt
Indstil wrdApp = CreateObject (“Word.Application”)
wrdApp.Visible = Sandt
Indstil wrdDoc = wrdApp.Documents.Add
Med wrdDoc
For i = 1 til 100
.Content.InsertAfter "Her er et eksempel på testlinje #" & i
.Content.InsertParagraphAfter
Næste i
Hvis Dir ("B: \ Test \ MyNewWordDoc.docx") "" "Så dræb" B: \ Test \ MyNewWordDoc.docx "
.SaveAs (“B: \ Test \ MyNewWordDoc.docx”)
.Tæt
Afslut med
wrdApp.Afslut
Indstil wrdDoc = Intet
Indstil wrdApp = Intet
Afslut Sub

For at kopiere ovenstående kode til din fil,

  • Tryk på Alt + F11 på tastaturet
  • På venstre side ser du Microsoft Excel -objekter
  • Højreklik og vælg Indsæt
  • Klik derefter på modul
  • Kopier koden til kodevinduet til højre

Lad os nu se, hvordan denne kode fungerer -

Først deklarerer vi de variabler, vi har brug for -i som heltal for at øge hver række, da den udfyldes fra excel -filen til ordet doc. Derefter er de 2 objektvariabler wrdApp og wrdDoc, wrdApp er Word Application -objektet, og wrdDoc er Word Document -objektet.

Indstil wrdApp = CreateObject (“Word.Application”)

Hvis Word allerede kører i dit system,CreateObject vil oprette en ny forekomst af Word. Så denne linje tildeler objektvariablen wrdApp til Word -applikationen, som du kan bruge senere i koden.

wrdApp.Visible = Sandt

Den nyoprettede forekomst af Word vil ikke være synlig, når den oprettes. For at gøre det synligt skal du indstille wrdApp.Visible = True, så det er synligt.

Indstil wrdDoc = wrdApp.Documents.Add

Vi oprettede den nye forekomst af ordprogrammet, men vi har endnu ikke åbnet et tomt word -dokument. Så denne kommando åbner et nyt word -dokument. Objektet wrdDoc er blevet tildelt dette nye dokument, så vi kan bruge det senere i koden.

Hvis du ikke vil åbne en ny projektmappe, men åbne en eksisterende projektmappe, kan du erstatte denne linje med

Indstil wrdDoc = wrdApp.Documents.Open (“B: \ My Documents \ WordDocs \ Doc1.docx”)

Denne linje åbner et eksisterende word -dokument, som er gemt på det angivne sted.

Med wrdDoc… .Slut med

Dette er vores “With” loop, der udelukkende fungerer med wrdDoc -objektet. Når du har åbnet denne loop, behøver du ikke at gentage teksten “wrdDoc” igen i denne loop. Du kan starte direkte med prikken (“.”) Før objekter, der vedrører wrdDoc. Denne sløjfe slutter med Afslut med udmelding. Når Slut med -sætningen er blevet indtastet, kan du ikke referere til objekterne efter wrdDoc med bare “.”.

For i = 1 til 100
.Content.InsertAfter "Her er et eksempel på testlinje #" & i
.Content.InsertParagraphAfter
Næste i

Dette er "For" -sløjfen. Det øges fra 1 til 100 og ved hvert trin tilføjer det en linje med teksten "Her er et eksempel på testlinje #" og tilføjer derefter trinet. Derefter indsætter det et linjeskift / afsnitskift, så det næste trin vises på den næste linje, ligesom et nyt afsnit.

Så denne proces vil blive gentaget 100 gange, da for -løkken angiver For i = 1 til 100. Dette er output, du får -

Hvis Dir ("B: \ Test \ MyNewWordDoc.Docx") "" "Så dræb" B: \ Test \ MyNewWordDoc.docx "

.SaveAs ("B: \ Test \ MyNewWordDoc.docx")

.Tæt

Når “For” -sløjfen er fuldført, kontrollerer koden, om filen MyNewWordDoc.docx findes. Hvis det gør det, slettes det. Og så gemmer den den nye fil i det samme navn og lukker filen.

wrdApp.Afslut

Indstil wrdDoc = Intet
Indstil wrdApp = Intet

Ordet applikation lukkes, og derefter vil de 2 objekter, der blev oprettet, frigives eller sættes til "Intet", så hukommelsen, der optages af disse objekter, frigives. Dette er hele koden, der sørger for at kopiere indhold fra excel til word.