Exwog – ataskaitų generatorius iš Excel į Word naudojant šabloną. Automatinis dokumentų generavimas Sugeneruokite dokumento šabloną iš vartotojo duomenų

Tęsiame anksčiau pradėtą ​​temą apie darbą su formomis programoje Word. Ankstesniuose straipsniuose į formas žiūrėjome tik „pažengusio vartotojo“ požiūriu, t.y. Sukūrėme dokumentus, kuriuos buvo lengva užpildyti rankiniu būdu. Šiandien noriu pasiūlyti išplėsti šią užduotį ir pabandyti naudoti turinio valdymo mechanizmą dokumentams generuoti.

Prieš imdamasis tiesioginės užduoties, noriu pasakyti keletą žodžių apie tai, kaip turinio valdiklių duomenys saugomi Word dokumentuose (kol kas sąmoningai praleisiu, kaip jie susiejami su dokumento turiniu, bet tikiuosi grįžti apie tai kažkada kituose straipsniuose).

Logiškas klausimas – kas tai? itemProps1.xml ir panašūs komponentai? Šie komponentai saugo duomenų šaltinių aprašymus. Greičiausiai, kaip ir planavo kūrėjai, be dokumente įmontuotų xml failų, turėjo būti naudojami ir kiti, tačiau kol kas įgyvendintas tik šis būdas.

Kodėl jie mums naudingi? itemPropsX.xml? Tai, kad juose pateikiamos xml schemos (jų targetNamespace), kurie naudojami tėvams itemX.xml. Tai reiškia, kad jei į dokumentą įtraukėme daugiau nei vieną tinkintą xml, tada norėdami rasti reikiamą, turime pereiti itemPropsX.xml komponentus ir rasti reikiamą diagramą, todėl būtina itemX.xml.

Dabar dar vienas dalykas. Mes neanalizuosime jungčių tarp komponentų rankiniu būdu ir neieškosime mums reikalingų, naudodami tik pagrindinę Packaging API! Vietoj to naudosime Open XML SDK (jo versijos pasiekiamos per NuGet). Žinoma, apie šią API anksčiau nesame nė žodžio, bet mūsų užduočiai iš jos reikia minimumo ir visas kodas bus gana skaidrus.

Na, pagrindinė įžanga padaryta, galime pradėti nuo pavyzdžio.

Pagal nusistovėjusią tradiciją paimsime tą pačią „Susitikimo ataskaitą“, kurią nupiešėme straipsnyje. Leiskite jums priminti, kad taip atrodė dokumento šablonas:

Ir tai yra XML, prie kurio buvo susieti dokumento laukai

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

1 veiksmas: sukurkite duomenų modelį

Tiesą sakant, mūsų užduotis yra ne tik sugeneruoti dokumentą, bet ir sukurti (bent jau juodraštinėje versijoje) patogų įrankį, kuriuo galėtų naudotis ir kūrėjas, ir vartotojas.

Todėl modelį paskelbsime C# klasės struktūros forma:

Viešos klasės susitikimo pastabos ( viešos susitikimo pastabos () ( Dalyviai = naujas sąrašas (); Sprendimai = naujas sąrašas (); ) public string Subject ( get; set; ) public DateTime Data ( get; set; ) public string Secretary ( get; set; ) public List Dalyvių ( gauti; nustatyti; ) viešas sąrašas Sprendimai ( get; set; ) ) public class Sprendimas ( vieša eilutė Problema ( get; set; ) public string Sprendimas ( get; set; ) public string Atsakingas ( get; set; ) public DateTime ControlDate ( get; set; ) ) public klasės dalyvis (vieša eilutės pavadinimas ( get; set; ) )

Apskritai, nieko ypatingo, išskyrus tai, kad XML serializavimui valdyti buvo pridėti atributai (nes modelio ir reikiamo XML pavadinimai šiek tiek skiriasi).

2 veiksmas: suskirstykite anksčiau pateiktą modelį į XML

Užduotis iš principo yra nereikšminga. Tai, kas vadinama „paimk mūsų mėgstamą XmlSerializer ir eik“, jei ne vienas dalykas Bet

Deja, į Dabartinė versija„Office“, matyt, turi klaidą, kuri yra tokia: jei pasirinktiniame xml prieš deklaruodami pagrindinę vardų erdvę (tą, iš kurios Word turėtų paimti elementus, kad būtų rodomas), paskelbkite kitą, tada pasikartojantys turinio valdikliai pradedami rodyti neteisingai (rodoma tik tiek elementų, kiek buvo pačiame šablone – t. y. pasikartojančioje sekcijoje). neveikia ).

Tie. Tai veikiantis xml:

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

ir šita:

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

bet šito jau nebėra:

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

Bandžiau pateikti klaidą „Microsoft“ palaikymo tarnybai „Connect“, bet dėl ​​tam tikrų priežasčių neturiu prieigos pateikti „Office“ klaidų. Nepadėjo ir diskusija MSDN forume.

Apskritai, būtinas sprendimas. Jei XML būtume sugeneravę rankomis, problemų nebūtų buvę – būtume viską darę patys. Tačiau šiuo atveju aš tikrai noriu naudoti standartinį XmlSerializer, kuris pagal numatytuosius nustatymus prideda kelias savo vardų sritis prie išvesties XML, net jei šios vardų erdvės nenaudojamos.

Mes visiškai nuslopinsime savo vardų erdvių išvestį XmlSerializer. Tiesa, šis metodas veiks tik tuo atveju, jei jai jų tikrai neprireiks (kitaip jie vis tiek bus pridėti ir tik PRIEŠ mūsų).

Tiesą sakant, visas kodas (su sąlyga, kad kintamasis susirinkimasPastabos yra anksčiau užpildytas MeetingNotes tipo objektas):

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

var namespaces = new XmlSerializerNamespaces();
vardų erdvės.Add(“” , “” );

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

3 veiksmas. Įveskite gautą XML į Word dokumentą.

Čia elgiamės taip:

  • nukopijuokite šabloną ir atidarykite kopiją
  • raskite jame reikiamą tinkintą xml (ieškokite pagal vardų sritį „urna: susitikimo užrašai“)
  • pakeiskite komponento turinį mūsų XML

Failas.Kopija(šablono pavadinimas, rezultatasDokumento pavadinimas, tiesa ); naudojant (var document = WordprocessingDocument.Open(resultDocumentName, true )) ( var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.OfTReferences ().Any(sr => sr.Uri.Value == "urn:MeetingNotes"!}

Visi vienaip ar kitaip susidorojame su tekstais. Kartais tenka sugeneruoti didelį ar nelabai didelį teksto kiekį kokiai nors užduočiai, pavyzdžiui, pažaisti su formatavimu, bet po ranka teksto nėra, tingi jį rašyti pats. Ką daryti? Atsakymas paprastas: naudokite atsitiktinio teksto generatorių, integruotą Word!

Redaktoryje Microsoft word galite greitai ir lengvai generuoti tekstą naudodami specialios komandos. Naudosiu „Word 2007“ kaip bandomąją priemonę. Šios komandos turėtų veikti visose „Word“ versijose. Papasakosiu apie tris teksto generavimo būdus.

1 būdas: rand() naudojimas

Funkcija rand() įterpia lokalizuotą teksto pavyzdį, 3 pastraipas po 3 sakinius. Atidarykite „Word“, užveskite žymeklį ten, kur netrukus pasirodys daugybė teksto, ir įveskite komandą:

ir paspauskite Enter. Pati funkcija rand išnyks, o jos vietoje atsiras 3 teksto pastraipos:

Bet tai dar ne viskas. Jei jums reikia daug teksto, galite naudoti funkciją rand su papildomais argumentais, pavyzdžiui:

=rand(x,y)

kur" x" reiškia pastraipų skaičių ir " y“ – sakinių skaičius kiekvienoje pastraipoje. Pavyzdžiui, =rand(20,5)įterps 20 pastraipų po penkias frazes. A =rand(7)įterps 7 pastraipas po 3 sakinius.

2 būdas: lorem() naudojimas

Norėdami įterpti seną gerą Lorem Ipsum kaip pavyzdį, naudokite funkciją lorem(). Įveskite šią komandą ir paspauskite Enter:

Ir mes gauname visą lotynišką tekstą

Funkcija lorem() taip pat lengvai priima papildomus argumentus, tokius kaip rand(), pastraipų ir sakinių skaičiaus forma. Be argumentų funkcija pagal numatytuosius nustatymus įterpia 3 pastraipas su trimis sakiniais.

3 metodas. rand.old() funkcija

Naudojimas panašus į ankstesnes komandas:

=rand.old()

ir paspauskite Enter.

Funkcija rand.old() paliekama suderinamumui su senu biuru, iki 2003 m. imtinai. Taikymo būdas yra toks pat, kaip ir ankstesniuose du, tik tekstą sudarys tos pačios frazės „Suvalgykite daugiau šių minkštų prancūziškų suktinukų ir išgerkite arbatos“. Kiekvienas, kuris retkarčiais dirbo su šriftais, žino šią frazę.

Galite perduoti argumentus, kaip ir pirmaisiais dviem būdais.

Štai ir viskas, sugeneruoti tekstai, dabar galite valgyti daugiau šių minkštų prancūziškų suktinukų ir atsigerti arbatos :)

Ar galėjote įklijuoti tekstą naudodami aukščiau pateiktas funkcijas?

A, pavardės stulpelyje B ir profesijos skiltyje C.

2. Sukurkite Word dokumentą (.doc arba .docx)


(A), (B) Ir (C).

(A), (B) Ir (C) (A)- vardas, (B)- pavardė, (C)- profesija.

Nustatymai programas.

3. Pasirinkite failų ir aplankų kelius


Pasirinkite

4. Nurodykite reikiamų duomenų lapus ir eilutes


Excel failo duomenų lapai

Excel failo duomenų eilutės Excel failo duomenų lapai

1 .

Jei norite, kad visi jūsų excel failo lapai ir (arba) eilutės su duomenimis dalyvautų formuojant dokumentą, spustelėkite atitinkamą mygtuką su užrašu dešinėje Skaičiai(jo užrašas pasikeis į Visi).

5. Nustatykite šabloną naujų žodžių failams pavadinti


Nustatykite naujų žodžių failų pavadinimų šabloną:

Naujų žodžių failų pavadinimų šablonas- tai programos sugeneruotų naujų dokumentų (word failų) pavadinimų šablonas. Čia pavadinimo šablone yra „Excel“ failo stulpelių pavadinimai, apsupti riestiniais skliaustais: (A) Ir (B). Kuriant naują dokumentą programa viską pakeis (A) Ir (B) atitinkamos langelių reikšmės iš „Excel“ failo - tai bus naujo dokumento (žodinio failo) pavadinimas.

Galite nustatyti kadravimo simbolius skirtuke Nustatymai programas.

6. Spustelėkite „Generuoti“


Spustelėkite mygtuką Generuoti ir pažanga bus rodoma ekrane. Bus sukurta lygiai tiek dokumentų (Word failų), kiek eilučių excel faile dalyvauja formuojant.

7. Viskas


Visi dokumentai (Word failai) buvo sukurti ir yra nurodytame aplanke Aplankas naujiems Word failams išsaugoti. Visi :)

Exwog- ataskaitų generatorius iš Excel į Word naudojant šabloną

Nemokamas Word failų generatorius, naudojant šabloną (Word failą), pagrįstą Excel failo duomenimis

Veikia su Mac OS, Windows ir Linux

Leidžia nurodyti naujų sugeneruotų žodžių failų pavadinimus

Leidžia nurodyti reikiamų duomenų lapus ir eilutes

Leidžia nurodyti aplinkinius „Excel“ stulpelių pavadinimų simbolius

Paprasta naudoti

Išsaugokite duomenis „Excel“ formatu (.xls ir .xlsx) ir keliais paspaudimais generuokite „Word“ failus (.doc ir .docx) :)


Kaip tai veikia?

Pažvelkite į savo „Excel“ failą


Šiame pavyzdyje „Excel“ faile yra informacijos apie klientus. Kiekviena eilutė atitinka konkretų klientą. Vardai išdėstyti stulpelyje A, pavardės stulpelyje B ir profesijos skiltyje C.

Spustelėkite norėdami peržiūrėti

Sukurkite Word dokumentą (.doc arba .docx)


Spustelėkite norėdami peržiūrėti

Sukurkite „šabloną“ (Word failą) naujiems dokumentams (word failams) generuoti. Čia „šablono“ tekste yra „Excel“ failo stulpelių pavadinimai, apsupti riestiniais skliaustais: (A), (B) Ir (C).

Programa sugeneruos naujus dokumentus pagal „šabloną“, pakeičiantį visus (A), (B) Ir (C) atitinkamos langelių reikšmės iš „Excel“ failo: (A)- vardas, (B)- pavardė, (C)- profesija.

Taip pat skirtuke galite nustatyti kadravimo simbolius Nustatymai programas.

Pasirinkite failų ir aplankų kelius


Pasirinkite failų ir aplankų kelius (mygtukai pažymėti Pasirinkite). Programoje nurodote šiuos kelius:

„Excel“ failas su duomenimis (*.xls, *.xlsx)- tai kelias į jūsų Excel failą su duomenimis (kliento informacija);

Word šablono failas (*.doc, *.docx)- tai kelias į jūsų „šabloną“ (žodinis failas, sukurtas ankstesniame žingsnyje);

Aplankas naujiems Word failams išsaugoti- tai kelias į aplanką, kuriame programa išsaugos naujus sugeneruotus dokumentus.

Spustelėkite norėdami peržiūrėti

Nurodykite reikiamų duomenų lapus ir eilutes


Spustelėkite norėdami peržiūrėti

Nurodykite savo Excel failo su duomenimis (kliento informacija), kurių dokumentus norite generuoti, lapų ir eilučių skaičių:

Excel failo duomenų lapai- Jūsų Excel failo lapų, kurie dalyvaus formuojant naujus dokumentus, numerius;

Excel failo duomenų eilutės- lapų eilučių numeriai (lapai nurodyti Excel failo duomenų lapai) savo Excel failą, kuris dalyvaus kuriant naujus dokumentus. Pagal kiekvienos nurodytos eilutės duomenis bus sukurtas atskiras dokumentas (word failas).

Lapų ir eilučių numeravimas programoje prasideda nuo 1 .

Kartą, susumavus olimpiados rezultatus, kai iš dalyvių buvo reikalaujama išsiųsti laiškus su išlaikytų (ar neišlaikytų) dalykų rezultatais, pastebėjau, kad sėdi mergina, kuri rankomis įveda egzamino rezultatus, mokinės vardą ir kitą informaciją į laiško šabloną. Priešais ją gulėjo keli atspausdinti Excel lapai su vardais ir įvertinimais. Kopijuoti-įklijuoti, Ctrl+C - Ctrl+V, viso vardo vertimas iš vardininko į kilmininką, taigi darbas jau atliktas su puse pirmo iš trijų duomenų lapų. Kaip manote, kiek laiko ji galėjo sėdėti kopijuodama duomenis ir tada tikrindama rezultatą? Manau, tai užtruktų gana ilgai, o klaidų būtų nemažai. Bet tada jai vis tiek teko pasirašyti pašto vokus... Pagailėjau jos laiko ir per kelias minutes parodžiau, kaip šį procesą galima automatizuoti naudojant paprastas priemones. Po nedidelės ekskursijos jos darbas buvo atliktas per 20 minučių.

Šioje pamokoje parodysiu, kaip galite greitai sukurti dokumentus (laiškus, kvietimus), tam skirdami minimaliai laiko. IN skirtingos versijosŠis aprašytas procesas skirtingomis kalbomis vadinamas skirtingai. Taigi rusiškai tai yra „Merge“, o angliškai „Merge“.

Tikiuosi, kad grandininiai laiškai yra iš pensijų fondas, mokesčių pranešimai kuriami taip pat :)

Įrankiai

Norėdami sukurti dokumentus, mums reikia OpenOffice Writer. Jame sukursime laiško šabloną. Jums taip pat reikės OpenOffice Calc. Jame sukursime duomenų bazę su vardais ir adresais tų žmonių, kuriuos, pavyzdžiui, norime pakviesti į vakarėlį. Vietoj programų iš OpenOffice paketo galima lengvai naudoti MS Word ir Excel. Duomenų bazė gali būti lengvai saugoma MS Access. Taigi, pradėkime.

Duomenų bazės kūrimas

Duomenų bazė yra ne kas kita, kaip lentelė MS Excel arba OpenOffice Calc, kur duomenys išdėstyti stulpeliais, o pirmoji eilutė naudojama stulpeliams pavadinti. Sukurkime, pavyzdžiui, stulpelius „pilnas vardas“, „miestas“, „indeksas“, „adresas“. Įveskite duomenis ir išsaugokite failą diske.



Pavyzdžiui, kiti šaltiniai taip pat gali būti naudojami kaip duomenų bazės Adresų knyga„Outlook“ arba „MS Access“ duomenų bazė.

Laiško šablono kūrimas

Sukurti laiško šabloną yra šiek tiek sudėtingiau. Kadangi duomenys iš lentelės (mūsų duomenų bazės) bus įterpiami į šabloną tokie, kokie yra, raidė turi būti atitinkamai parašyta. Jei jūsų vardas ir pavardė jūsų duomenų bazėje yra vardininko raide, vargu ar galėsite naudoti šį lauką adresu „Gerb.<ФИО>!” o vokui eilutėje „Kam:<ФИО>“ Pastaruoju atveju visas vardas atrodys kiek gremėzdiškai.

Kuriant laiško šabloną rekomenduoju pradėti nuo laiško rašymo kokiam nors tikram žmogui. Jūs galite tai padaryti patys. Tada pažymėkite jame duomenis, kuriuos paimsite iš duomenų bazės, ir pakeiskite juos atitinkamais laukais. Prieš keičiant pasirinktą tekstą lauke, rekomenduoju atkreipti dėmesį, kokia raide turėtų prasidėti duomenų bazės laukas (mažąja ar didžiąja). Žinoma, galite iš karto sukurti šabloną su laukeliais, bet tuomet galite nepastebėti kai kurių klaidų, pavyzdžiui, atvejų neatitikimų.



Jau pateiktame šablone aišku, kad mums reikės viso vardo gimtosios raidės ir lauko, kuriame yra tik pirmasis ir antrasis vardai. Pirmajame laukelyje „Kam“ galime pakeisti „Gavėjas“ ir tada mums puikiai tiks visas vardas vardininko didžiąja raide. Su antruoju lauku viskas yra šiek tiek sudėtingiau ir duomenų bazėje turėsime sukurti kitą stulpelį ir užpildyti jį atitinkamais duomenimis. Vienoje iš kitų pamokų aš jums pasakysiu, kaip tai padaryti automatiškai, tačiau kol kas manysime, kad tokią sritį jau turime.

Norėdami įterpti lauką ir susieti šabloną su duomenų baze, turite atlikti šią veiksmų seką. „OpenOffice Writer“ pasirinkite duomenų bazę



ir spustelėkite „Apibrėžti“.



Tada į norimą vietą įterpkite lauką iš prijungtos duomenų bazės. Norėdami tai padaryti, paspauskite Ctrl+F2 arba meniu „Įterpti“ pasirinkite „Laukai“ ir „Kita“. Atsidariusiame lange pasirinkite skirtuką „Duomenų bazės“, lauko tipe pasirinkite „Laiškų suliejimo laukai“, pasirinkite atitinkamą lauką iš duomenų bazės ir spustelėkite „Įterpti“. Šiame lange taip pat galima pasirinkti tikrą duomenų bazę.



Įterpę vieną lauką, galite, neuždarydami dabartinio lango, pasirinkti tekstą, kad pakeistumėte jį kitu lauku, pažymėti lauką ir dar kartą spustelėti „Įterpti“. Ir taip toliau kiekvienam laukui.

MS Word situacija yra šiek tiek panaši ir galbūt patogesnė. Sukūrę lentelę MS Excel, paleiskite MS Word ir eikite į skirtuką „Paskirstymai“. Šiame skirtuke galite matyti tris būtinus veiksmus: „Pradėti sujungimą“, „Parengti dokumentą ir įterpti laukus“ ir „Užbaigti“. Taip pat yra tarpinis veiksmas „Peržiūrėti rezultatą“, tačiau jis neprivalomas.

Taigi darbas prasideda nuo dokumento pasirinkimo. Tai gali būti raidės, lipdukai arba įprastas „Word“ dokumentas. Galite iš karto paleisti sujungimo vedlį, kuris padės pereiti visus proceso etapus. Kitas žingsnis yra pasirinkti gavėją, tai yra duomenų bazę. Čia galite pasirinkti paruoštą duomenų bazę (pavyzdžiui, ankstesniame etape sukurtą MS Excel lentelę) arba sukurti naujas sąrašas. Pasirinkus sąrašą, suaktyvėja mygtukai „Įterpti sujungimo lauką“, „Keisti gavėjų sąrašą“ ir kt. Dialogo lange „Keisti gavėjų sąrašą“, kuris atsidaro su atitinkamu mygtuku, galite pasirinkti iš viso sąrašo. tik sujungimui būtinus įrašus.







Įterpiant laukus, man patogu paryškinti visus laukus pilkai, paspaudus mygtuką „Highlight Merge Fields“. Priešingu atveju, jei tokių laukų yra daug, jie gali būti prarasti tekste.

Taigi, šablonas yra paruoštas.

Laiškų generavimas

Paskutinis etapas yra raidžių generavimas. Norėdami tai padaryti, „OpenOffice“ meniu „Įrankiai“ pasirinkite „Laiškų suliejimo vedlys...“ ir atlikite visus siūlomus šablono sujungimo su duomenų baze veiksmus.





Dialogo lange matome, kad iš 8 pasiūlytų punktų kai kurių punktų atlikti nereikia. Taigi dokumentą jau sukūrėme ir mums jo redaguoti nereikia, taip pat jau įdėjome adreso bloką. Bet imkim dalykų eilės tvarka.

Pirmiausia pasirinkite, kad kuriame raides pagal dabartinį dokumentą ir lango apačioje spustelėkite „Kitas“. Antras momentas – pasirinkti, ar turėsime šį popierinį laišką, ar el. Kad laiškas būtų įrašytas į failą, turėtumėte pasirinkti pirmąjį. Spustelėkite „Kitas“. Trečiajame punkte prašoma sukurti adresų bloką, tačiau kadangi jį sukūrėme rankiniu būdu, panaikiname visų langelių žymėjimą ir pereiname prie kito veiksmo. Čia mūsų prašoma įterpti užklausą, bet ją jau turime, todėl spaudžiame „Kitas“. Šeštas punktas – redaguoti dokumentą, peržiūrėti dokumentą su laukeliais, įterptais iš duomenų bazės ir, jei reikia, kai kuriuos laukus išskirti.



7 veiksme prašoma redaguoti kiekvieną failą, sukurtą prijungus šabloną prie duomenų bazės. Ir galiausiai paskutiniame, 8-ame žingsnyje, galite pasirinkti, ką daryti su gautais dokumentais. Galite išsaugoti, atsispausdinti arba siųsti el. Tokiu atveju visus dokumentus galite išsaugoti viename faile arba kiekvieną dokumentą atskirai.

MS Word sujungimo procesas baigiamas spustelėjus mygtuką Rasti ir sujungti.



Iš išskleidžiamojo meniu matyti, kad visus laiškus galima atspausdinti ir išsiųsti el. paštu, tačiau nėra akivaizdu, kad visas jas galima įrašyti į failą. Norėdami išsaugoti, turite pasirinkti pirmąjį elementą - „Keisti atskirus dokumentus“. Tai atsidarys naujas dokumentas, kuriame kiekviena nauja raidė bus su naujas puslapis, ir čia galite išsaugoti šį failą.

Išvada

Taigi, šioje pamokoje sužinojote, kaip naudoti sujungimo įrankį kuriant dokumentus pagal šabloną. Trumpai užrašykite veiksmų seką:

  1. Būtina lentelės procesoriuje sukurti duomenų bazę, iš kurios bus paimti duomenys laukams užpildyti.
  2. Turite sukurti laiško šabloną.
  3. Atlikite sujungimą ir išsaugokite rezultatą.

Ankstesniuose „Dokumentų pildymo automatizavimo“ serijos straipsniuose kalbėjau apie tai, kaip sukurti programos vartotojo sąsają, organizuoti įvesties duomenų patvirtinimą ir gauti skaičius žodžiais nenaudojant VBA kodo. Šiame paskutiniame straipsnyje kalbėsime apie visų būtinų reikšmių perkėlimo iš „Excel“ darbaknygės į „Word“ dokumentą magiją. Leiskite man parodyti, kas turėtų nutikti pabaigoje:

Mechanizmo aprašymas

Pirmiausia bendrais bruožais aprašysiu, kaip duomenys bus perkelti į Word dokumentą. Visų pirma, mums reikia šablono Word dokumentas, kuriame yra visi žymėjimai, lentelės ir ta teksto dalis, kuri išliks nepakitusi. Šiame šablone turite apibrėžti vietas, kur bus pakeistos reikšmės iš „Excel“ darbaknygės, tai patogiausia padaryti naudojant žymes. Po to turite sutvarkyti „Excel“ duomenis taip, kad atitiktų „Word“ šabloną, ir galiausiai, bet ne mažiau svarbu, VBA parašyti pačią perdavimo procedūrą.

Taigi, pirmieji dalykai.

Sukurkite „Word“ dokumento šabloną

Viskas čia be galo paprasta – sukuriame įprastą dokumentą, rašome ir formatuojame tekstą, apskritai pasiekiame reikiamą formą. Tose vietose, kur reikės pakeisti reikšmes iš „Excel“, turite sukurti žymes. Tai atliekama taip:

Taigi, turėsite sukurti visas žymes, tai yra pažymėti visas vietas, kur bus įterpti duomenys iš "Excel". Gautas failas turi būti išsaugotas kaip "MS Word šablonas", naudojant meniu punktą "Failas" -> "Išsaugoti kaip...".

„Excel“ duomenų paruošimas

Patogumo dėlei nusprendžiau visus duomenis, kuriuos reikia perkelti į Word dokumentą, sudėti į atskirą darbalapį, pavadintą Žymės – žymės. Šiame lape yra du stulpeliai: pirmame yra žymių pavadinimai (tiksliai taip, kaip jie pavadinti Word dokumente), o antrajame yra atitinkamos perkeliamos reikšmės.

Kai kurios iš šių verčių gaunamos tiesiai iš duomenų įvedimo lapo, o kai kurios iš pagalbinių lentelių, esančių paramos lape. Šiame straipsnyje neanalizuosiu formulių, kurios skaičiuoja reikiamas reikšmes, jei kas neaišku, užduokite klausimus komentaruose.

Šiame etape svarbu teisingai nurodyti visus žymių pavadinimus – nuo ​​to priklauso duomenų perdavimo teisingumas.

Perkėlimo procedūra

Bet tai yra įdomiausias dalykas. Yra dvi duomenų perkėlimo kodo vykdymo parinktys:

  • Kodas veikia „Excel“ darbaknygėje, duomenys po vieną perkeliami į „Word“ ir iškart dedami į dokumentą.
  • Kodas vykdomas atskirame Word dokumente, visi duomenys iš Excel perkeliami viena partija.

Vykdymo greičio požiūriu, ypač esant daugybei žymių, antrasis variantas atrodo daug patrauklesnis, tačiau reikalauja sudėtingesnių veiksmų. Būtent tai ir naudojau.

Štai ką reikia padaryti:

  • Sukurkite Word dokumento šabloną su makrokomandų palaikymu.Šiame šablone bus vykdomasis VBA kodas.
  • Sukurtame šablone reikia įdėti VBA parašytą programą. Norėdami tai padaryti, redaguodami šabloną paspauskite klavišų kombinaciją Alt+F11 ir atsidariusiame redaktoriaus lange įveskite Visual Basic programos kodas.
  • „Excel“ darbaknygėje parašykite kodą, kuris iškviečia užpildymo procedūrą iš naujai sukurto „Word“ šablono.

Straipsnyje procedūros teksto nepateiksiu – jį nesunkiai galima peržiūrėti faile FillDocument.dotm, esančiame archyvo aplanke Template su pavyzdžiu.

Kaip visa tai galite panaudoti savo konkrečiai problemai išspręsti?

Suprantu, kad žodžiais viskas atrodo labai paprasta, bet kas nutinka praktiškai? Siūlau tiesiog naudoti paruoštą variantą. Atsisiųskite archyvą su pavyzdžiu, „Excel“ darbaknygėje paspauskite klavišų kombinaciją Alt + F11, kad atidarytumėte „Visual Basic“ redaktorių ir perskaitykite visus mano komentarus apie programą. Norint pakeisti programą pagal savo poreikius, reikia pakeisti tik kelių konstantų, kurios yra pačioje programos pradžioje, reikšmę. Galite laisvai kopijuoti visą programos tekstą į savo projektą.

Archyvo struktūra

Prie šio straipsnio pridėtame archyve yra keli failai.

Pagrindinis failas yra „Excel“ darbaknygė, pavadinta „Patvirtinimų kūrimas“. Šioje darbaknygėje yra 4 darbalapiai, iš kurių rodomi tik du: „Įvestis“ – duomenų įvedimo lapas ir „Duomenų bazė“ – visų įvestų dokumentų archyvas.

Aplanke Šablonai yra Word dokumentų šablonai. Vienas iš jų yra šablonas, kuriame yra žymių pildymo programa, o antrasis – pildoma forma. Šabloną galite naudoti be pakeitimų su programa, tačiau pildoma forma, žinoma, turės būti pertvarkyta pagal jūsų poreikius.

Kaip perdaryti pavyzdį „sau“?

  1. Paruoškite „Word“ dokumento šabloną, kurį norite užpildyti. Jame sukurkite visas reikalingas žymes ir išsaugokite kaip „MS Word šabloną“.
  2. Nukopijuokite FillDocument.dotm failą iš archyvo, pridėto prie šio straipsnio, į aplanką su paruoštu šablonu. Šis failas yra atsakingas už šablono žymių užpildymą ir jame nieko keisti nereikia.
  3. Paruoškite „Excel“ darbaknygę duomenims įvesti. Jūs turite nuspręsti, ar ji turės "pažangių" vartotojo sąsaja ir atlikti įvairius sudėtingus skaičiavimus. Svarbiausia, kad jame būtų darbalapis su žymės pavadinimo „Word“ šablone ir vertės, kurią reikia pakeisti, atitikimo lentelė.
  4. Į paruoštą darbaknygę įdėkite VBA programos kodą iš pavyzdinio failo. Pakeiskite visas konstantas pagal savo projektą.
  5. Patikrinkite, ar tinkamai veikia.
  6. Aktyviai naudokitės!
Dalintis