Exwog - generator de rapoarte de la Excel la Word folosind un șablon. Generare automată de documente Generați un document șablon din datele utilizatorului

Continuăm subiectul de lucru cu formulare în Word pe care l-am început mai devreme. În articolele anterioare, ne-am uitat la formulare doar din punctul de vedere al unui „utilizator avansat”, adică. Am creat documente care au fost ușor de completat manual. Astăzi vreau să propun extinderea acestei sarcini și încercarea de a folosi mecanismul de control al conținutului pentru a genera documente.

Înainte de a trece la sarcina noastră imediată, vreau să spun câteva cuvinte despre modul în care datele pentru controalele de conținut sunt stocate în documentele Word (voi omite în mod deliberat modul în care sunt legate de conținutul documentului deocamdată, dar sper să revin la aceasta cândva în articolele următoare).

O întrebare logică - ce este? itemProps1.xml si componente similare? Aceste componente stochează descrieri ale surselor de date. Cel mai probabil, așa cum a planificat dezvoltatorii, pe lângă fișierele xml încorporate în document, ar fi trebuit să fie folosite și altele, dar până acum a fost implementată doar această metodă.

De ce ne sunt utile? itemPropsX.xml? Faptul că listează scheme xml (lor targetNamspace), care sunt folosite în părinte itemX.xml. Aceasta înseamnă că, dacă am inclus mai mult de un xml personalizat în document, atunci pentru a-l găsi pe cel de care avem nevoie, trebuie să parcurgem itemPropsX.xml componente și găsiți diagrama cerută, și deci necesar itemX.xml.

Acum încă un lucru. Nu vom analiza manual conexiunile dintre componente și le vom căuta pe cele de care avem nevoie, folosind doar API-ul de bază pentru ambalaje! În schimb, vom folosi SDK-ul Open XML (build-urile sale sunt disponibile prin NuGet). Desigur, nu am spus niciun cuvânt despre acest API până acum, dar pentru sarcina noastră este necesar minim de la acesta și tot codul va fi destul de transparent.

Ei bine, introducerea de bază este făcută, putem începe cu exemplul.

Conform tradiției stabilite, vom lua același „Raport de întâlnire” pe care l-am desenat în articol. Permiteți-mi să vă reamintesc că așa arăta șablonul de document:

Și acesta este XML-ul la care au fost legate câmpurile documentului

< meetingNotes xmlns ="urn:MeetingNotes" subject ="" date ="" secretary ="" > < participants > < participant name ="" /> < decisions > < decision problem ="" solution ="" responsible ="" controlDate ="" />

Pasul 1: Creați un model de date

De fapt, sarcina noastră nu este doar să generăm un document, ci să creăm (cel puțin într-o versiune nefinalizată) un instrument convenabil pentru utilizare atât de către dezvoltator, cât și de către utilizator.

Prin urmare, vom declara modelul sub forma unei structuri de clasă C#:

Clasa publică MeetingNotes ( public MeetingNotes() ( Participanți = listă nouă (); Decizii = Listă nouă (); ) public șir Subiect ( get; set; ) public DateTime Data ( get; set; ) public șir Secretar ( get; set; ) public List Participanți ( obțineți; setați; ) Listă publică Decizii ( get; set; ) ) public class Decizie ( public șir Problemă ( get; set; ) public șir Soluție ( get; set; ) public șir Responsabil ( get; set; ) public DateTime ControlDate ( get; set; ) ) public Class Participant ( șir public Nume ( get; set; ) )

În general, nimic special, cu excepția faptului că au fost adăugate atribute pentru a controla serializarea XML (deoarece numele din model și XML-ul necesar sunt ușor diferite).

Pasul 2: Serializați modelul de mai sus în XML

Sarcina este, în principiu, banală. Ceea ce se numește „luați XmlSerializer-ul nostru preferat și mergeți”, dacă nu pentru un singur lucru Dar

Din păcate, în Versiune curentă Office, aparent, are o eroare, care este după cum urmează: dacă în xml personalizat inainte de prin declararea spațiului de nume principal (cel din care Word ar trebui să ia elemente pentru a fi afișate), declarați altul, apoi repetarea Controalelor de conținut încep să fie afișate incorect (sunt afișate doar atâtea elemente câte erau în șablonul însuși - adică secțiunea care se repetă nu funcționează ).

Acestea. Acesta este xml-ul care funcționează:

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

si acesta si acesta:

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" xmlns:t ="urn:TTT" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

dar acesta nu mai este acolo:

< test xmlns:t ="urn:TTT" xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

Am încercat să trimit o eroare la asistența Microsoft pe Connect, dar din anumite motive nu am acces pentru a trimite erori Office. Și nici discuția de pe forumul MSDN nu a ajutat.

În general, o soluție necesară. Dacă am fi generat manual XML-ul, nu ar fi fost probleme - am fi făcut totul singuri. Cu toate acestea, în acest caz, îmi doresc foarte mult să folosesc XmlSerializer standard, care adaugă implicit câteva dintre spațiile sale de nume la fișierul XML de ieșire, chiar dacă aceste spații de nume nu sunt folosite.

Vom suprima complet ieșirea propriilor noastre spații de nume în XmlSerializer. Adevărat, această abordare va funcționa doar dacă într-adevăr nu are nevoie de ele (altfel vor fi adăugate în continuare și chiar ÎNAINTE de a noastră).

De fapt, întregul cod (cu condiția ca variabila note de întâlnire conține un obiect populat anterior de tip MeetingNotes):

var serializer = new XmlSerializer(typeof (MeetingNotes));
var serializedDataStream = new MemoryStream();

var namespaces = new XmlSerializerNamespaces();
namespaces.Add(“” , “” );

serializer.Serialize(serializedDataStream, meetingNotes, namespaces);
serializedDataStream.Seek(0, SeekOrigin.Begin);

Pasul 3. Introduceți XML rezultat într-un document Word.

Aici procedăm astfel:

  • copiați șablonul și deschideți copia
  • găsiți XML personalizat necesar în el (căutați după spațiu de nume „urn:MeetingNotes”)
  • înlocuiți conținutul componentei cu XML-ul nostru

File.Copy(nume șablon, rezultatNumeDocument, adevărat); folosind (var document = WordprocessingDocument.Open(resultDocumentName, true )) ( var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.OfType) ().Any(sr => sr.Uri.Value == „urn:MeetingNotes"!}

Cu toții ne ocupăm de texte într-un fel sau altul. Uneori este nevoie să generezi o cantitate mare sau nu foarte mare de text pentru o anumită sarcină, de exemplu, pentru a te juca cu formatarea, dar nu ai text la îndemână, ești prea lene să-l scrii singur. Ce să fac? Răspunsul este simplu: folosește generatorul de text aleatoriu încorporat în Word!

În editor Microsoft Word puteți genera text rapid și ușor folosind echipe speciale. Voi folosi Word 2007 ca cobai.Aceste comenzi ar trebui să funcționeze în toate versiunile de Word. Vă voi spune despre trei metode de generare a textului.

Metoda 1: Folosind rand()

Funcția rand() inserează un text eșantion localizat, 3 paragrafe cu 3 propoziții. Deschideți cuvântul, plasați cursorul acolo unde urmează să apară o grămadă de text și introduceți comanda:

și apăsați Enter. Funcția rand în sine va dispărea și în locul ei vor apărea 3 paragrafe de text:

Dar asta nu este tot. Dacă aveți nevoie de mult text, puteți utiliza funcția rand cu argumente suplimentare, ca acesta:

=rand(x,y)

Unde " X" înseamnă numărul de paragrafe și " y„—numărul de propoziții din fiecare paragraf. De exemplu, =rand(20,5) va insera 20 de paragrafe cu cinci fraze fiecare. A =rand(7) va insera câte 7 paragrafe a câte 3 propoziţii.

Metoda 2: Folosirea lorem()

Pentru a introduce vechiul Lorem Ipsum ca probă, utilizați funcția lorem(). Tastați următoarea comandă și apăsați Enter:

Și obținem acest text pan-latin

Funcția lorem() acceptă, de asemenea, cu ușurință argumente suplimentare, cum ar fi rand(), sub forma numărului de paragrafe și propoziții. Fără argumente, funcția inserează implicit 3 paragrafe cu câte trei propoziții.

Metoda 3. funcția rand.old().

Utilizarea este similară cu comenzile anterioare:

=rand.old()

și apăsați Enter.

Funcția rand.old() este lăsată pentru compatibilitate cu biroul vechi, până în 2003 inclusiv. Metoda de aplicare este aceeași cu cele două anterioare, doar textul va consta din aceleași fraze „Mâncați mai multe din aceste rulouri franțuzești moi și beți niște ceai”. Oricine a lucrat ocazional cu fonturi cunoaște această expresie.

Puteți transmite argumente, ca în primele două metode.

Asta e tot, textele au fost generate, acum poți să mănânci mai multe din aceste rulouri franțuzești moi și să bei ceai :)

Ați reușit să lipiți text folosind funcțiile de mai sus?

A, nume de familie în coloană Bși profesii în rubrica C.

2. Creați un document Word (.doc sau .docx)


(A), (B)Și (C).

(A), (B)Și (C) (A)- Nume, (B)- nume, (C)- profesie.

Setări programe.

3. Selectați căile pentru fișiere și foldere


Selectați

4. Specificați foile și rândurile de date necesare


Fișe de date ale fișierului Excel

Rânduri de date ale fișierului Excel Fișe de date ale fișierului Excel

1 .

Dacă doriți ca toate foile și/sau rândurile fișierului dumneavoastră Excel cu date să participe la formarea documentului, faceți clic pe butonul corespunzător cu inscripția din dreapta Numerele(inscripția sa se va schimba în Toate).

5. Setați un șablon pentru denumirea noilor fișiere cu cuvinte


Setați modelul de denumire pentru fișierele de cuvinte noi:

Șablon nou de nume de fișiere de cuvinte- acesta este un șablon pentru numele documentelor noi (fișiere Word) generate de program. Aici modelul de nume conține numele coloanelor fișierului Excel, înconjurate de acolade: (A)Și (B). Când creați un document nou, programul va înlocui totul (A)Și (B) valorile celulelor corespunzătoare din fișierul Excel - acesta va fi numele noului document (fișier Word).

Puteți seta încadrarea caracterelor pe filă Setări programe.

6. Faceți clic pe „Generați”


Faceți clic pe butonul Genera iar progresul va apărea pe ecran. Se vor crea exact la fel de multe documente (fișiere word) cât numărul de rânduri din fișierul excel implicat în formare.

7. Totul


Toate documentele (fișierele word) au fost create și se află în folderul specificat în Folder pentru a salva noile fișiere Word. Toate:)

exwog- generator de rapoarte din Excel în Word folosind un șablon

Generator gratuit de fișiere Word folosind un șablon (fișier Word) bazat pe datele fișierului Excel

Funcționează pe Mac OS, Windows și Linux

Vă permite să setați numele noilor fișiere de cuvinte generate

Vă permite să specificați foi și rânduri cu datele necesare

Vă permite să specificați caracterele din jur pentru numele coloanelor Excel

Ușor de folosit

Stocați datele în format Excel (.xls și .xlsx) și generați fișiere Word (.doc și .docx) în câteva clicuri :)


Cum functioneaza?

Aruncă o privire la fișierul tău excel


În acest exemplu, fișierul excel conține informații despre clienți. Fiecare linie corespunde unui anumit client. Numele sunt aranjate într-o coloană A, nume de familie în coloană Bși profesii în rubrica C.

Click pentru a vedea

Creați un document Word (.doc sau .docx)


Click pentru a vedea

Creați un „șablon” (fișier word) pentru generarea de noi documente (fișiere word). Aici textul „șablon” conține numele coloanelor fișierului excel, înconjurate de acolade: (A), (B)Și (C).

Programul va genera noi documente conform „șablonului” înlocuind toate (A), (B)Și (C) valorile celulelor corespunzătoare din fișierul Excel: (A)- Nume, (B)- nume, (C)- profesie.

De asemenea, puteți seta caracterele de încadrare pe filă Setări programe.

Selectați căile pentru fișiere și foldere


Selectați căile pentru fișiere și foldere (butoane etichetate Selectați). În program specificați următoarele căi:

Fișier Excel cu date (*.xls, *.xlsx)- aceasta este calea către fișierul dumneavoastră Excel cu date (informații despre client);

Fișier șablon Word (*.doc, *.docx)- aceasta este calea către „șablonul” dvs. (fișierul de cuvinte creat în pasul anterior);

Folder pentru a salva noile fișiere Word- aceasta este calea către folderul în care programul va salva documentele noi generate.

Click pentru a vedea

Specificați foile și rândurile datelor solicitate


Click pentru a vedea

Specificați numărul de foi și rânduri ale fișierului Excel cu date (informații despre client) pentru care doriți să generați documente:

Fișe de date ale fișierului Excel- numerele de foi ale fișierului dumneavoastră excel care vor participa la formarea de noi documente;

Rânduri de date ale fișierului Excel- numerele liniilor de foi (colile specificate în Fișe de date ale fișierului Excel) din fișierul dumneavoastră excel care va participa la generarea de noi documente. Pe baza datelor fiecărei linii specificate, va fi creat un document separat (fișier word).

Numerotarea foilor și liniilor din program începe cu 1 .

Odată, după însumarea rezultatelor olimpiadei, când participanților li s-a cerut să trimită scrisori cu rezultatele la subiectele promovate (sau nereușite), am observat că o fată stătea și își folosea mâinile pentru a introduce rezultatele examenului, numele elevului. și alte informații în șablonul de scrisoare. În fața ei zăceau mai multe imprimate Foi Excel cu nume și evaluări. Copy-Paste, Ctrl+C - Ctrl+V, traducerea numelui complet de la nominativ la cazul genitiv, și astfel lucrarea a fost deja făcută cu jumătate din prima dintre cele trei foi de date. Cât timp crezi că ar fi putut să stea acolo copiend date și apoi verificând rezultatul? Cred că ar dura destul de mult și ar fi destul de multe greșeli. Dar apoi mai trebuia să semneze plicuri poștale... Mi-a părut rău pentru timpul acordat și în câteva minute i-am arătat cum acest proces poate fi automatizat folosind mijloace simple. După o mică excursie, munca ei a fost finalizată în 20 de minute.

În această lecție vă voi arăta cum puteți crea rapid documente (scrisori, invitații) petrecându-le un minim de timp. ÎN versiuni diferite Acest proces descris este numit diferit în diferite limbi. Deci în rusă este „Merge”, iar în engleză este „Merge”.

Sper că literele în lanț sunt de la fond de pensie, avizele fiscale sunt create în același mod :)

Instrumente

Pentru a crea documente avem nevoie de OpenOffice Writer. În el vom crea un șablon de scrisoare. Veți avea nevoie și de OpenOffice Calc. În ea vom crea o bază de date cu numele și adresele acelor persoane pe care, de exemplu, dorim să le invităm la o petrecere. MS Word și Excel pot fi folosite cu ușurință în locul programelor din pachetul OpenOffice. Baza de date poate fi stocată cu ușurință în MS Access. Și așa, să începem.

Crearea bazei de date

O bază de date nu este altceva decât un tabel în MS Excel sau OpenOffice Calc, unde datele sunt aranjate în coloane și prima linie este folosită pentru denumirea coloanelor. Să creăm, de exemplu, coloane „nume complet”, „oraș”, „index”, „adresă”. Introduceți datele și salvați fișierul pe disc.



Alte surse pot fi, de asemenea, folosite ca baze de date, de exemplu Agenda de adrese Outlook sau baza de date MS Access.

Crearea unui șablon de scrisoare

Crearea unui șablon de scrisoare este puțin mai complicată. Deoarece datele din tabel (baza noastră de date) vor fi inserate în șablon așa cum este, scrisoarea trebuie scrisă în consecință. Dacă numele tău complet se află în cazul nominativ din baza ta de date, atunci este puțin probabil să poți folosi acest câmp la adresa „Dragă,<ФИО>!” și pentru plicul din rândul „Către:<ФИО>" În acest din urmă caz, numele complet va părea oarecum stângaci.

Când compuneți un șablon de scrisoare, vă recomand să începeți cu alcătuirea unei scrisori către o persoană reală. O poți face singur. Apoi evidențiați în el datele pe care le veți lua din baza de date și înlocuiți-le cu câmpurile corespunzătoare. Înainte de a înlocui textul selectat într-un câmp, vă recomand să fiți atenți la ce literă ar trebui să înceapă câmpul din baza de date (minuscule sau majuscule). Desigur, puteți crea imediat un șablon cu câmpurile, dar atunci este posibil să nu observați unele greșeli, cum ar fi inconsecvențe în cazuri.



Deja în șablonul dat este clar că vom avea nevoie de un nume complet în cazul genitiv și de un câmp care să conțină doar prenumele și al doilea nume. Cu primul câmp, putem înlocui „Către” cu „Destinatar” și apoi numele complet în cazul nominativ ni se va potrivi perfect. Cu al doilea câmp, totul este ceva mai complicat și va trebui să creăm o altă coloană în baza de date și să o completăm cu datele corespunzătoare. Într-una din lecțiile următoare vă voi spune cum să faceți acest lucru automat, dar deocamdată vom presupune că avem deja un astfel de domeniu.

Pentru a insera un câmp și a lega șablonul la baza de date, trebuie să efectuați următoarea secvență de acțiuni. În OpenOffice Writer, selectați o bază de date



și faceți clic pe „Definiți”.



Apoi introduceți un câmp din baza de date conectată în locația dorită. Pentru a face acest lucru, apăsați Ctrl+F2 sau în meniul „Inserare” selectați „Câmpuri” și „Altele”. În fereastra care se deschide, selectați fila „Băzuri de date”, selectați „Câmpuri de îmbinare prin corespondență” în tipul de câmp, selectați câmpul corespunzător din baza de date și faceți clic pe „Inserați”. Baza de date reală poate fi selectată și în această fereastră.



După ce un câmp este inserat, puteți, fără a închide fereastra curentă, să selectați textul pentru a-l înlocui cu următorul câmp, să selectați câmpul și să faceți clic din nou pe „Insert”. Și așa mai departe pentru fiecare dintre domenii.

Pentru MS Word situația este oarecum similară și, poate, mai convenabilă. După ce ați creat tabelul în MS Excel, lansați MS Word și accesați fila „Distribuții”. Pe această filă puteți vedea trei pași necesari: „Începeți o îmbinare”, „Compuneți un document și introduceți câmpuri” și „Terminați”. Există și un pas intermediar „Vizualizare rezultat”, dar este opțional.

Și astfel munca începe cu selectarea unui document. Acestea ar putea fi scrisori, autocolante sau un document Word obișnuit. Puteți lansa imediat Expertul Merge, care vă va ghida prin toate etapele procesului. Următorul pas este selectarea destinatarului, adică baza de date. Aici puteți selecta o bază de date gata făcută (de exemplu, un tabel MS Excel creat în etapa anterioară) sau puteți crea noua lista. După ce lista este selectată, devin active butoanele „Inserare câmp de îmbinare”, „Modificare lista destinatarilor”, etc.. Prin dialogul „Modificare lista destinatarilor”, care se deschide cu butonul corespunzător, puteți selecta din întreaga listă. numai înregistrările necesare comasării.







Când inserez câmpuri, mi se pare convenabil să evidențiezi toate câmpurile cu gri făcând clic pe butonul „Evidențiază Îmbinarea câmpurilor”. În caz contrar, dacă există multe astfel de câmpuri, acestea se pot pierde în text.

Și așa, șablonul este gata.

Generarea de scrisori

Ultima etapă este generarea scrisorilor. În OpenOffice, pentru a face acest lucru, în meniul „Tools”, selectați „Mail Merge Wizard...” și parcurgeți toți pașii propuși pentru îmbinarea șablonului nostru cu baza de date.





În caseta de dialog vedem că din cele 8 puncte propuse nu trebuie să realizăm unele puncte. Deci am creat deja documentul și nu trebuie să-l edităm, am introdus deja și blocul de adrese. Dar să luăm lucrurile în ordine.

Mai întâi, selectați că creăm litere pe baza documentului curent și faceți clic pe „Următorul” în partea de jos a ferestrei. Al doilea punct este să alegem dacă vom primi această scrisoare de hârtie sau e-mail. Pentru ca scrisoarea să fie salvată într-un fișier, ar trebui să îl selectați pe primul. Faceți clic pe „Următorul”. Al treilea punct ne cere să creăm un bloc de adrese, dar din moment ce l-am creat manual, debifăm toate casetele și trecem la pasul următor. Aici ni se cere să inserăm o solicitare, dar avem deja una, așa că facem clic pe „Next”. Al șaselea punct este să editați documentul, să priviți documentul cu câmpuri inserate din baza de date și, dacă este necesar, să excludeți unele câmpuri.



Pasul 7 vă solicită să editați fiecare dintre fișierele create ca urmare a conectării șablonului la baza de date. Și în sfârșit, în ultimul pas, al 8-lea, poți alege ce să faci cu documentele primite. Puteți salva, imprima sau trimite prin e-mail. În acest caz, puteți salva toate documentele într-un singur fișier sau fiecare document separat.

În MS Word, procesul de îmbinare se încheie făcând clic pe butonul Căutare și îmbinare.



Din meniul derulant este evident că toate scrisorile pot fi tipărite și trimise prin e-mail, dar nu este evident că toate pot fi salvate într-un fișier. Pentru a salva, trebuie să selectați primul element - „Schimbați documentele individuale”. Aceasta se va deschide document nou, în care fiecare literă nouă va fi localizată cu pagina noua, și aici puteți salva acest fișier.

Concluzie

Și astfel, în această lecție ați învățat cum să utilizați instrumentul de îmbinare pentru a crea documente pe baza unui șablon. Să scriem pe scurt succesiunea de acțiuni:

  1. Este necesar să se creeze o bază de date într-un procesor de tabel din care se vor prelua date pentru completarea câmpurilor.
  2. Trebuie să creați un șablon de scrisoare.
  3. Efectuați îmbinarea și salvați rezultatul.

În articolele anterioare din seria „Automatizarea umplerii documentelor”, am vorbit despre cum să creați interfața de utilizator a aplicației, să organizați validarea datelor de intrare și să obțineți numere în cuvinte fără a utiliza codul VBA. În acest articol final vom vorbi despre magia transferului tuturor valorilor necesare dintr-un registru de lucru Excel într-un document Word. Permiteți-mi să vă arăt ce ar trebui să se întâmple până la urmă:

Descrierea mecanismului

Pentru început, voi descrie în termeni generali exact cum vor fi transferate datele într-un document Word. În primul rând, avem nevoie de un șablon document Word, care conține toate markupurile, tabelele și acea parte a textului care va rămâne neschimbată. În acest șablon, trebuie să definiți locurile în care vor fi înlocuite valorile din registrul de lucru Excel; acest lucru se face cel mai convenabil folosind marcaje. După aceasta, trebuie să organizați datele Excel în așa fel încât să asigurați conformitatea cu șablonul Word și, nu în ultimul rând, să scrieți procedura de transfer în sine în VBA.

Deci, primul lucru pe primul loc.

Creați un șablon de document Word

Totul aici este extrem de simplu - creăm un document obișnuit, tastam și formatăm textul, în general, obținem forma necesară. În acele locuri în care va trebui să înlocuiți valorile din Excel, trebuie să creați marcaje. Acest lucru se face după cum urmează:

Astfel, va trebui să creați toate marcajele, adică să marcați toate locurile în care vor fi inserate datele din Excel. Fișierul rezultat trebuie salvat ca „Șablon MS Word” utilizând elementul de meniu „Fișier” -> „Salvare ca...”.

Pregătirea datelor Excel

Pentru comoditate, am decis să plasez toate datele care trebuie transferate într-un document Word pe o foaie de lucru separată numită Marcaje - marcaje. Această foaie are două coloane: prima conține numele marcajelor (exact așa cum sunt denumite în documentul Word), iar a doua conține valorile corespunzătoare de transferat.

Unele dintre aceste valori sunt obținute direct din foaia de introducere a datelor, iar unele sunt obținute din tabele auxiliare aflate pe foaia Suport. În acest articol nu voi analiza formulele care calculează valorile cerute; dacă ceva este neclar, pune întrebări în comentarii.

În această etapă, este important să indicați corect toate numele marcajelor - corectitudinea transferului de date depinde de aceasta.

Procedura de transfer

Dar acesta este cel mai interesant lucru. Există două opțiuni pentru executarea codului de migrare a datelor:

  • Codul rulează într-un registru de lucru Excel, datele sunt transferate în Word câte o valoare și imediat plasate în document.
  • Codul este executat într-un document Word separat, toate datele sunt transferate din Excel într-un singur lot.

Din punct de vedere al vitezei de execuție, mai ales cu un număr mare de marcaje, a doua opțiune pare mult mai atractivă, dar necesită acțiuni mai complexe. Exact asta am folosit.

Iată ce trebuie să faci:

  • Creați un șablon de document Word cu suport macro. Acest șablon va conține cod VBA executabil.
  • În șablonul creat trebuie să plasați un program scris în VBA. Pentru a face acest lucru, atunci când editați șablonul, apăsați combinația de taste Alt+F11 și intrați în fereastra editorului care se deschide Visual Basic codul programului.
  • Într-un registru de lucru Excel, scrieți codul care apelează procedura de completare din șablonul Word nou creat.

Nu voi furniza textul procedurii în articol - acesta poate fi vizualizat cu ușurință în fișierul FillDocument.dotm, aflat în folderul Template din arhiva cu exemplul.

Cum poți folosi toate acestea pentru a-ți rezolva problema?

Înțeleg că în cuvinte, totul pare foarte simplu, dar ce se întâmplă în practică? Vă sugerez să utilizați pur și simplu o opțiune gata făcută. Descărcați arhiva cu exemplul, în registrul de lucru Excel, apăsați combinația de taste Alt+F11 pentru a deschide editorul Visual Basic și citiți toate comentariile mele despre program. Pentru a modifica programul în funcție de nevoile dvs., trebuie doar să modificați valoarea mai multor constante; acestea sunt situate chiar la începutul programului. Puteți copia liber întregul text al programului în proiectul dvs.

Structura arhivei

Arhiva atașată acestui articol conține mai multe fișiere.

Fișierul principal este un registru de lucru Excel numit „Crearea confirmărilor”. Acest registru de lucru are 4 foi de lucru, dintre care doar două sunt afișate: „Intrare” - o foaie de introducere a datelor și „Bază de date” - o arhivă a tuturor documentelor introduse.

Dosarul Șabloane conține șabloane de documente Word. Unul dintre ele este un șablon care conține un program de completare a marcajelor, iar al doilea este un formular de completat. Puteți utiliza șablonul fără modificări cu programul, dar formularul de completat, desigur, va trebui refăcut în funcție de nevoile dumneavoastră.

Cum să reluați exemplul „pentru dumneavoastră”?

  1. Pregătiți un șablon de document Word pentru a fi completat. Creați toate marcajele necesare în el și salvați-l ca „șablon MS Word”.
  2. Copiați fișierul FillDocument.dotm din arhiva atașată acestui articol în folderul cu șablonul pregătit. Acest fișier este responsabil pentru completarea marcajelor șablonului și nu trebuie schimbat nimic în el.
  3. Pregătiți un registru de lucru Excel pentru introducerea datelor. Depinde de tine să decizi dacă va avea vreun „avansat” interfața cu utilizatorulși efectuați diverse calcule dificile. Principalul lucru este că conține o foaie de lucru cu un tabel de corespondență între numele marcajului din șablonul Word și valoarea care trebuie înlocuită.
  4. Introduceți codul programului VBA din fișierul exemplu în registrul de lucru pregătit. Înlocuiți toate constantele în funcție de proiectul dvs.
  5. Testați funcționarea corectă.
  6. Folosește-l activ!
Acțiune