Mange ganger må du kopiere data fra en excel -fil til et word -dokument. Du kan gjøre dette med en makro veldig enkelt. Makroen vil åpne et nytt / eksisterende word doc, kopiere innholdet og deretter lagre og lukke word doc. La oss se hvordan dette gjøres.
Koden du kan bruke er -
Alternativ Eksplisitt
Sub CreateNewWordDoc ()
Dim i As Integer
Dim wrdApp As Object, wrdDoc As Object
Sett wrdApp = CreateObject ("Word.Application")
wrdApp.Visible = True
Sett wrdDoc = wrdApp.Documents.Add
Med wrdDoc
For i = 1 til 100
.Content.InsertAfter "Her er et eksempel på testlinje #" & i
.Content.InsertParagraphAfter
Neste jeg
Hvis Dir (“B: \ Test \ MyNewWordDoc.docx”) “” Så drep “B: \ Test \ MyNewWordDoc.docx”
.SaveAs (“B: \ Test \ MyNewWordDoc.docx”)
.Lukk
Slutt med
wrdApp.Slutt
Sett wrdDoc = Ingenting
Sett wrdApp = Ingenting
Slutt Sub
For å kopiere koden ovenfor til filen din,
- Trykk Alt + F11 på tastaturet
- På venstre side vil du se Microsoft Excel -objekter
- Høyreklikk og velg Sett inn
- Klikk deretter på Modul
- Kopier koden til kodevinduet til høyre
La oss nå se hvordan denne koden fungerer -
Først deklarerer vi variablene vi trenger -i som heltall for å øke hver rad som den blir befolket fra excel -filen til ordet doc. Deretter er de to objektvariablene wrdApp og wrdDoc, wrdApp Word -applikasjonsobjektet og wrdDoc er Word Document -objektet.
Sett wrdApp = CreateObject ("Word.Application")
Hvis Word allerede kjører i systemet ditt,CreateObject vil opprette en ny forekomst av Word. Så denne linjen tildeler objektvariabelen wrdApp til Word -applikasjonen som du kan bruke senere i koden.
wrdApp.Visible = True
Den nyopprettede forekomsten av Word vil ikke være synlig når den opprettes. For å gjøre den synlig må du sette wrdApp.Visible = True slik at den er synlig.
Sett wrdDoc = wrdApp.Documents.Add
Vi opprettet den nye forekomsten av ordprogrammet, men vi har ikke åpnet et tomt orddokument ennå. Så denne kommandoen åpner et nytt word -dokument. Objektet wrdDoc er tilordnet dette nye dokumentet, slik at vi kan bruke det senere i koden.
Hvis du ikke vil åpne en ny arbeidsbok, men åpne en eksisterende arbeidsbok, kan du erstatte denne linjen med
Sett wrdDoc = wrdApp.Documents.Open ("B: \ My Documents \ WordDocs \ Doc1.docx")
Denne linjen åpner et eksisterende word -dokument som er lagret på det angitte stedet.
With wrdDoc… .End With
Dette er vår "With" -sløyfe som vil fungere helt med wrdDoc -objektet. Når du har åpnet denne løkken, trenger du ikke å gjenta teksten “wrdDoc” igjen i denne løkken. Du kan starte med prikken (“.”) Før noen objekter knyttet til wrdDoc. Denne løkken ender med Slutt med uttalelse. Når enden med setningen er lagt inn, kan du ikke referere til objektene etter wrdDoc med bare ".".
For i = 1 til 100
.Content.InsertAfter "Her er et eksempel på testlinje #" & i
.Content.InsertParagraphAfter
Neste jeg
Dette er "For" -sløyfen. Den øker fra 1 til 100, og ved hvert trinn setter den inn en linje med teksten "Her er et eksempel på testlinje #" og legger deretter til inkrementnummeret. Deretter setter det inn et linjeskift / avsnittsskift slik at neste økning vises på neste linje, som et nytt avsnitt.
Så denne prosessen vil bli gjentatt 100 ganger, siden for -sløyfen angir For i = 1 til 100. Dette er utgangen du får -
Hvis Dir ("B: \ Test \ MyNewWordDoc.Docx") "" Så drep "B: \ Test \ MyNewWordDoc.docx"
.SaveAs ("B: \ Test \ MyNewWordDoc.docx")
.Lukk
Når “For” -sløyfen er fullført, vil koden sjekke om filen MyNewWordDoc.docx finnes. Hvis det gjør det, slettes det. Og så vil den lagre den nye filen med samme navn og lukke filen.
wrdApp.Slutt
Sett wrdDoc = Ingenting
Sett wrdApp = Ingenting
Ordet søknad lukkes, og deretter vil de to objektene som ble opprettet, slippes eller settes til "Ingenting", slik at minnet som opptas av disse objektene frigjøres. Dette er hele koden som tar seg av kopiering av innhold fra excel til word.