Excel naar Word-macro - Excel-tips

Inhoudsopgave

Met dank aan Jake die de Excel-vraag van deze week heeft verstrekt:

Hoe kan ik een macro schrijven die Excel-spreadsheetgegevens gebruikt en voor elke rij gegevens een Word-bestand maakt?

Jake - wat een geweldig idee! Ik heb vaak verkoopresultaten voor het hele bedrijf en het zou geweldig zijn om elke vertegenwoordiger alleen zijn of haar informatie in Word te kunnen sturen. U zou dit vanuit Word kunnen doen met Afdruk samenvoegen, maar het besturen van Word vanuit Excel is een interessant vooruitzicht. Het onderstaande voorbeeld is vrij eenvoudig, maar men zou op dit concept kunnen voortbouwen om redelijk geavanceerde toepassingen te doen.

Laten we eerst eens kijken naar een voorbeeldgegevensset. Ik heb een werkmap gemaakt met twee bladen: een met de naam Data en een met de naam Template. Het gegevenswerkblad bevat veel rijen met gegevens. Het sjabloonwerkblad heeft de structuur van het Word-document dat ik wil maken. In dit geval wil ik de naam van kolom A van de database kopiëren naar cel C4 op de sjabloon. Kolommen B: E van de database komen in de cellen C10: C13.

Laten we eerst eens kijken naar een voorbeeldgegevensset. Ik heb een werkmap gemaakt met twee bladen: een met de naam Data en een met de naam Template. Het gegevenswerkblad bevat veel rijen met gegevens. Het sjabloonwerkblad heeft de structuur van het Word-document dat ik wil maken. In dit geval wil ik de naam van kolom A van de database kopiëren naar cel C4 op de sjabloon. Kolommen B: E van de database komen in de cellen C10: C13.

Het gegevensblad
Het sjabloonblad

Start de VB Editor met alt-F11. Omdat we hier Word-opdrachten willen geven, gaat u naar Extra> Verwijzingen. Scroll naar beneden om "Microsoft Word 8" te vinden en vink het vakje aan om dit item te selecteren.

Om Word vanuit Excel te besturen, moet u een variabele definiëren die de Word-toepassing vertegenwoordigt. In het onderstaande voorbeeld heb ik appWD gebruikt. Voor alle opdrachten in de Excel-macro die u op de Word-toepassing wilt toepassen, voegt u gewoon appWD toe aan de opdracht. Omdat ik nog nooit een regel Word Macro-code heb geschreven, ging ik naar Word, nam de acties op en kopieerde die code vervolgens naar Excel, waarbij ik het voorvoegsel voor elke regel toevoegde.

Sub ControlWord() ' You must pick Microsoft Word 8.0 from Tools>References ' in the VB editor to execute Word commands. ' See VB Help topic "Controlling One Microsoft Office Application from Another" ' for more information. ' Originally published by www.MrExcel.com 2/28/1999 Dim appWD As Word.Application ' Create a new instance of Word & make it visible Set appWD = CreateObject("Word.Application.8") appWD.Visible = True Sheets("Data").Select 'Find the last row with data in the database FinalRow = Range("A9999").End(xlUp).Row For i = 2 To FinalRow Sheets("Data").Select ' Copy the name to cell C4 Range("A" & i).Copy Destination:=Sheets("Template").Range("C4") ' Copy data columns, transpose and paste in C10:C13 Range("B" & i & ":E" & i).Copy Sheets("Template").Select Range("C10").PasteSpecial Transpose:=True ' Copy the data for the new document to the clipboard Range("A1:F15").Copy ' Tell Word to create a new document appWD.Documents.Add ' Tell Word to paste the contents of the clipboard into the new document appWD.Selection.Paste ' Save the new document with a sequential file name appWD.ActiveDocument.SaveAs FileName:="File" & i ' Close this new word document appWD.ActiveDocument.Close Next i ' Close the Word application appWD.Quit End Sub

Nadat u deze macro hebt uitgevoerd, heeft u één nieuw Word-bestand voor elke rij met gegevens op uw gegevensblad.

Nogmaals bedankt aan Jake voor deze geweldige vraag. Er zijn veel toepassingen waarbij het besturen van Word vanuit Excel een krachtige oplossing kan bieden.

Interessante artikelen...