Екцел то Ворд Мацро - Екцел Савети

Преглед садржаја

Хвала Јакеу који је пружио овонедељно Екцел питање:

Како могу да напишем макро који ће узети Екцел прорачунске податке и створити Ворд датотеку за сваки ред података?

Јаке - каква сјајна идеја! Често имам продајне резултате за целу компанију и било би сјајно кад бих могао сваком представнику послати само своје податке у Ворду. То бисте могли да урадите из програма Ворд помоћу обједињавања поште, али контрола програма Ворд из програма Екцел је занимљива перспектива. Пример у наставку је прилично једноставан, али неко би могао да се надовеже на овај концепт и ради прилично напредне апликације.

Прво, погледајмо узорак скупа података. Направио сам радну свеску са два листа - један под називом Подаци и један под називом Предложак. Радни лист Подаци садржи много редова података. Радни лист Предложак има структуру Ворд документа који желим да направим. У овом случају, желећу да копирам име из колоне А базе података у ћелију Ц4 на предлошку. Колоне Б: Е базе података ићи ће у ћелије Ц10: Ц13.

Прво, погледајмо узорак скупа података. Направио сам радну свеску са два листа - један под називом Подаци и један под називом Предложак. Радни лист Подаци садржи много редова података. Радни лист Предложак има структуру Ворд документа који желим да направим. У овом случају, желећу да копирам име из колоне А базе података у ћелију Ц4 на предлошку. Колоне Б: Е базе података ићи ће у ћелије Ц10: Ц13.

Табела података
Образац шаблона

Покрените ВБ Едитор помоћу алт-Ф11. С обзиром да овде желимо да издајемо Ворд наредбе, идите на Алати> Референце. Померите се надоле да бисте пронашли „Мицрософт Ворд 8“ и означите поље за потврду да бисте изабрали ову ставку.

Да бисте управљали Вордом из програма Екцел, морате дефинисати променљиву која представља Вордову апликацију. У доњем примеру сам користио аппВД. За било које наредбе у Екцел макроу које желите да примените на Вордову апликацију, једноставно ставите префикс наредбе у аппВД. Заправо, с обзиром да никада пре нисам написао ред макронаредбе програма Ворд, прешао сам у Ворд, снимио радње, затим копирао тај код у Екцел, додајући префикс пре сваког реда.

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

Након покретања овог макроа, имаћете једну нову Ворд датотеку за сваки ред података на вашем листу података.

Још једном хвала Јакеу на овом сјајном питању. Постоји много апликација где би управљање Ворд-ом из Екцел-а могло пружити моћно решење.

Занимљиви Чланци...