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.