Automatizácia v excelových príkladoch. Automatizácia práce v dokumentoch Microsoft Excel. Vytvorenie tlačidla makra na paneli s nástrojmi Rýchly prístup

  • 31.10.2019

Excel používa makrá na automatizáciu časovo náročných alebo opakujúcich sa úloh. Makro je postupnosť príkazov a akcií uložených pod jedným názvom. Makro je možné vytvoriť dvoma spôsobmi: 1) automatické zaznamenávanie akcií; 2) vypracovať postup v editore VBA.

Makro môžete zaznamenať s absolútnymi odkazmi a s relatívnymi odkazmi. Makro s relatívnymi odkazmi sa spustí od bunky, ktorá bola aktuálnou bunkou pred spustením makra. Makro s absolútnymi odkazmi beží v rovnakých bunkách, aké boli použité pri zaznamenávaní makra.

Na prácu s makrami a ovládacími prvkami použite záložku Vývojár(obr. 7.1). Ak na páse s nástrojmi takáto karta nie je, musíte ju povoliť takto:

Stlačte tlačidlo Office, kliknite na tlačidlo ;

Zaškrtávacie políčko Zobraziť kartu Vývojár na páse s nástrojmi.

Záznam makro sa spustí po stlačení tlačidla Zaznamenajte makro. Spôsob nahrávania je určený stavom tlačidla Relatívne odkazy. Ak je tlačidlo povolené, zaznamená sa makro s relatívnymi odkazmi, ak je vypnuté, zaznamená sa makro s absolútnymi odkazmi.


Ryža. 7.1. Záložka Vývojár pásy na náradie

Výkon Makro možno priradiť ku klávesovej skratke, tlačidlu na paneli s nástrojmi, ovládaciemu prvku formulára alebo grafickému objektu na pracovnom hárku.

Odstránenie makro sa vytvorí v dialógovom okne Makrá, ktorý sa otvára tlačidlom Makrá na záložke Vývojár.V zozname musíte vybrať požadované makro a kliknúť na tlačidlo Odstrániť. V tom istom dialógovom okne môžete spustiť vybrané makro na vykonanie, pokiaľ nie je určený iný spôsob vykonania makra.

Excel používa ovládacie prvky formulárov a ovládacie prvky ActiveX na automatizáciu vypĺňania šablón. Ovládací prvok je grafický objekt, ktorý umožňuje užívateľovi ovládať aplikáciu. Ak chcete vytvoriť ovládací prvok, musíte tlačidlo rozbaliť Vložiť(obr. 7.1), vyberte požadovaný prvok a roztiahnite ho myšou na požadovanú veľkosť na požadovanom mieste pracovného listu. Keď je zvolený ovládací prvok, pomocou tlačidla Vlastnosti na záložke Vývojár môžete zmeniť jeho parametre (obr. 7.6), napríklad ho prepojiť s ľubovoľnou bunkou listu.


Ryža. 7.2. Ovládacie prvky formulára

1. Skupina – rám, ktorý sa používa na zoskupovanie prepínačov.

2. Tlačidlo - slúži na vykonanie makra, ktoré je mu priradené.

3. Checkbox – ak je zaškrtnuté, v bunke s ním spojenej sa zobrazí hodnota TRUE, ak nie je začiarknuté, zobrazí sa FALSE;

4. Prepínač – používa sa vždy v skupine. Keď sú prepínače zoskupené, je možné označiť iba jeden z nich. Potom sa v bunke priradenej k tejto skupine prepínačov zobrazí sériové číslo vybraného prepínača.

5. Zoznam (a) a Combo Box (b) – zobrazí zoznam hodnôt, ktoré je potrebné najskôr zadať do buniek, a potom zadať rozsah týchto buniek v parametroch ovládacieho prvku. Číslo hodnoty vybratej v zozname sa umiestni do bunky priradenej k zoznamu.

6. Posuvník (a) a Počítadlo (b) - zmeňte hodnotu bunky, ktorá je s nimi spojená. V parametroch ovládacieho prvku môžete nastaviť rozsah a krok zmeny tejto hodnoty.

Príklad 7.1. Napíšte makro s názvom „Prvý_deň_mesiaca“, ktoré počnúc od aktuálnej bunky zobrazí dátumy prvých dní šiestich mesiacov nasledujúcich po aktuálnom mesiaci a naformátuje ich tak, aby sa názov mesiaca zobrazoval ako slovo, zarovnané doľava , farba textu - modrá, písmo - Courier New tučné .Priraďte vykonanie makra k automatickému tvaru.

Výkon:

1. Stlačte tlačidlo Zaznamenajte makro na záložke Vývojár.

2. V dialógovom okne, ktoré sa otvorí, nastavte názov makra - Prvý_deň_mesiaca, môžete nastaviť kombináciu klávesov a potom kliknúť na tlačidlo OK. Tým sa zapne nahrávanie a tlačidlo Zaznamenajte makro sa skonvertuje na tlačidlo Zastavte nahrávanie(obr. 7.3).

Ryža. 7.3. Zobrazenie fragmentu záložky Vývojár pri nahrávaní makra

4. Vykonajte akcie, ktoré má makro vykonať:

Do aktuálnej bunky zadajte vzorec, ktorý vráti dátum prvého dňa mesiaca nasledujúceho po aktuálnom mesiaci (aktuálny dátum je 15.05.2006): =DÁTUM(ROK(DNES()),MESIAC(DNES( ))+1,1)

Vyberte 6 buniek, počnúc zadaným vzorcom, rozbaľte tlačidlo Vyplňte na záložke Domov a vyberte tím Postup…;

V dialógovom okne, ktoré sa otvorí, zadajte Typ à Dátumy, Jednotky à Mesiac.

Otvorený dialóg Formát bunky...;

Na záložke číslo nastavte formát DD MMMM RRRR, na karte Zarovnanieà vodorovne pozdĺž ľavého okraja na karte Písmoà font - Courier New tučné, farba - modrá.

5. Stlačte tlačidlo Zastavte nahrávanie(obr. 7.3).

6. Nakreslite nejaký automatický tvar na pracovný hárok tak, že ho vyberiete na karte Vložiť. V kontextovej ponuke automatického tvaru vyberte príkaz Priradiť makro. V dialógovom okne, ktoré sa otvorí, zadajte makro „Prvý_deň v mesiaci“ a kliknite na tlačidlo OK.

Ryža. 7.4. Výsledok spustenia makra „Prvý_deň v mesiaci“

7. Aktivujte ľubovoľnú bunku a skontrolujte fungovanie makra kliknutím na automatický tvar (obr. 7.4).

Príklad 7.2. Vytvorte formulár objednávky prác (obr. 7.5), v ktorom sa v bunke B2 pomocou zoznamu zobrazí názov práce a pomocou posuvnej lišty sa vyplní počet hodín v bunke B3.



Ryža. 7.5. Vytvorenie formulára s ovládacími prvkami formulára.

Výkon:

  1. Vyplňte bunky údajmi ako na obr. 7.5, okrem buniek B2, B3, E1.
  2. Nakreslite zoznam (obr. 7.2, 5-a) a posúvač (obr. 7.2, 6-a).
  3. Zmeňte parametre vytvorených ovládacích prvkov (obr. 7.6). Keďže rolovacia lišta je spojená s bunkou B3, kliknutím myšou na šípku rolovacej lišty zmeníte hodnotu bunky o jeden krok – 1. Zoznam je spojený s bunkou E1, preto, keď vyberiete hodnotu „Ceiling Whitewash“ v bunke sa zobrazí poradové číslo tejto hodnoty v zozname - 3.

Ryža. 7.6. Možnosti posúvača (vľavo) a zoznamu (vpravo).

  1. Ak chcete zobraziť názov úlohy v B2 a nie jej číslo, musíte použiť funkciu VLOOKUP, ktorá v závislosti od čísla úlohy vybranej zo zoznamu v bunke E1 vráti zodpovedajúcu hodnotu z druhého stĺpca tabuľka E2:F5. Vzorec v B2 bude teda takýto: =VLOOKUP(E1;E2:F5;2).

Komentujte . Pomocou ovládacích prvkov ActiveX môžete vytvoriť posúvač a zoznam a potom zmeniť ich vlastnosti, ako je znázornené na obrázku:

Laboratórna práca č.7

Cieľ práce: Naučte sa vytvárať a používať makrá a ovládacie prvky formulárov pracovného hárka na automatizáciu práce v Exceli.

Úlohy:

ja Záznam makier:

  1. S relatívnymi odkazmi. Makro by malo zobrazovať názvy mesiacov v stĺpci od aktuálnej bunky s nasledujúcim formátovaním:

Farba symbolov je červená,

Orámovanie buniek je tenká čiara,

Text je zarovnaný na stred,

Vonkajší rám stĺpika je hrubá čiara.

V paneli nástrojov Formuláre vybrať prvok Tlačidlo, nakreslite ho na pracovný list, pomenujte MESIACE a priraďte vytvorené makro.

  1. S absolútnymi odkazmi. Makro by malo vymazať celý pracovný hárok. Nakreslite ľubovoľný automatický tvar na pracovný hárok a priraďte vytvorené makro.

3. Zadajte ľubovoľný dátum do ľubovoľnej bunky. Makro by malo počnúc zadaným dátumom vyplniť 10 buniek dátumami v pracovných dňoch, vymazať 10 buniek z dvoch susedných stĺpcov a naformátovať ich tak, ako je znázornené na obrázku. Nakreslite ľubovoľný automatický tvar na pracovný hárok a priraďte vytvorené makro.

II. Vytvorte šablónu na vyplnenie formulára objednávky leteniek s ovládacími prvkami formulára:

1. Vyplňte bunky údajmi okrem buniek C2:C4, C6 a C13 a vložte ovládacie prvky formulára:


2. Zmeňte vlastnosti ovládacích prvkov:

2.1. Pre kombinované boxy tlač je zakázaná, objemové tieňovanie je povolené, zoznam je tvorený rozsahom I3:I7, výsledok sa umiestni do bunky G3, t.j. do tejto bunky sa umiestni číslo prvku, ktorý bol vybratý v zozname.

2.2. Pre počítadlo tlač je zakázaná, objemové tieňovanie je povolené, rozsah je od 1 do 10 v krokoch po 1, výsledok sa umiestni do bunky C6.

2.3. Pre prepínače je povolená tlač a objemové tieňovanie, výsledok sa umiestni do bunky G 4. Prepínače sú kombinované do rám.

2.4. Pre tlačidlá Tlač je zakázaná.

3. V bunkách C2:C4 písať vzorce (pomocou funkcie VLOOKUP), ktoré zobrazujú mesto, čas odchodu a cenu lístka v závislosti od vybranej hodnoty zoznamu.

4. V cele C13 napíšte vzorec na výpočet sumy, ktorá sa má zaplatiť v závislosti od počtu vstupeniek a typu vstupenky (pre zľavnené vstupenky - 30% zľava).

5. Odstráňte ochranu z buniek, ku ktorým sú priradené kontroly.

6. Skryť vzorce.

7. Skryť stĺpce obsahujúce pomocné údaje.

8. Vytvorte a priraďte k tlačidlu " Tuleň» makro, ktoré nastaví rozloženie na šírku a veľkosť papiera A5 a zobrazí šablónu v režime ukážky.

Bezpečnostné otázky k téme

1. Akými spôsobmi môžete automatizovať vypĺňanie šablóny?

3. Pomenujte ovládacie prvky a ich účel.

4. Ako vytvorím ovládací prvok na pracovnom hárku a zmením jeho nastavenia?

5. Vymenujte spôsoby vykonania makra.


Literatúra

1. Microsoft Office 2007: všetky programy v balíku: Word, Excel, Access, PowerPoint, Publisher, Outlook, OneNote, InfoPath, Groove / Tikhomirov A. N. [atď.]. - Petrohrad: Veda a technika, 2009. - 599 s.

2. Microsoft Office Excel 2007: [ruská verzia: preklad z angličtiny] / Curtis D. Fry. - Moskva: EKOM, 2009. - 479 s.

3. Excel 2007 pre manažérov a ekonómov: logistika, výroba a optimalizačné výpočty / Alexander Trusov. - Petrohrad: Peter: Peter Press, 2009. – 254 s.

4. Grafy, výpočty a analýza údajov v Exceli 2007 / Serogodsky V.V. [et al.]. - Petrohrad: Veda a technika, 2009. - 333 s.

5. Funkcie v Exceli 2007: používateľská príručka / Minko A. A. - Moskva: Eksmo, 2008. - 480 s.

6. Hospodárska informatika / vyd. P.V. Konyukhovsky a D.N. Kolesovej. – Petrohrad: Peter, 2001. – 560 s.

7. Garnajev A.Yu. Excel, VBA, Internet v ekonomike a financiách. – Petrohrad: BHV–Petersburg, 2001. – 816 s.

8. Dodge M., Kinata K., Stinson K. Efektívna práca s Excelom 7.0: prel. z angličtiny – Petrohrad: Peter, 1996. – 1031 s.

9. Spracovanie a analýza ekonomických informácií v programe Microsoft Excel: Príručka pre študentov ekonomických odborov / D.P. Podkopajev, V.I. Yashkin. – Mn.: Vydavateľstvo BSU, 2001. – 50 s.

10. Obchodná analýza pomocou Microsoft Excel / Karlberg Conrad. – 2. vyd. – M.: Williams, 2003. – 446 s.

11. Používanie makier v Exceli / S. Roman. – 2. vyd. – Petrohrad: Peter, 2004. – 507 s.

12. Goetz K., Gilbert M. Programovanie vo Visual Basic a VBA. Príručka pre vývojárov: preložená z angličtiny. – K.: BHV Publishing Group, 2001. – 912 s.


Tento článok je venovaný téme, ktorá možno nie je nová, ale ako ukazujú listy čitateľov, stále je aktuálna - automatizácia aplikácií balíka Microsoft Office. Mnoho vývojárov pri práci na svojich projektoch (bez ohľadu na to, aký vývojový nástroj - Delphi, C++Builder, Visual Basic:) často využíva služby poskytované balíkom Microsoft Office, napríklad vytváranie kontingenčných tabuliek a grafov pomocou programu Microsoft Excel, generovanie a tlač dokumenty pomocou programu Microsoft Word atď.<решения на базе Microsoft Office>). Správa komponentov Office z iných aplikácií sa vykonáva pomocou automatizácie (Automation, predtým OLE Automation) - všetky aplikácie Microsoft Office sú automatizačné servery (alebo COM servery). Na vytváranie takýchto aplikácií sú vhodné akékoľvek vývojové nástroje, ktoré umožňujú vytvárať automatizačné radiče (COM klienti). Na tento účel sa najčastejšie používa Visual Basic, ale môže to byť aj Delphi, C++Builder a Visual C++.

Pred diskusiou o možnostiach určitých vývojových nástrojov by ste však mali pochopiť, čo je automatizácia.

Stručne o automatizácii

Automatizácia je jednou z možností poskytovaných technológiou Microsoft COM (Component Object Model). Bez toho, aby sme zachádzali do podrobností o implementácii tejto technológie, poznamenávame, že ju používajú aplikácie (nazývané COM servery) na poskytovanie prístupu k svojim objektom, ako aj k vlastnostiam a metódam týchto objektov, iným aplikáciám (nazývaným COM klienti ), ktoré môžu byť aj vývojovými nástrojmi . Napríklad textový procesor, ktorý je serverom COM, môže poskytnúť iným aplikáciám prístup k dokumentu, odseku alebo záložke pomocou vhodných objektov. Na pomenovanie (a identifikáciu) COM serverov sa zvyčajne používajú špeciálne reťazcové označenia - programové identifikátory (ProgID). Sú potrebné na to, aby operačný systém mohol pomocou týchto identifikátorov určiť, v ktorom adresári (alebo na ktorom počítači v lokálnej sieti, ak sa používa ten či onen spôsob vzdialeného prístupu k serveru) sa nachádza spustiteľný súbor automatizačného servera, a spustite ho na vykonanie. O tom, aké identifikátory programu sa presne používajú konkrétne aplikácie balíka Microsoft Office, sa bude diskutovať v častiach venovaných týmto aplikáciám.

Automatizačné servery často obsahujú sady objektov rovnakého typu, nazývané kolekcie. Napríklad textový procesor môže obsahovať zbierku dokumentov a každý dokument môže obsahovať zbierku odsekov.

Ako zistím, ktoré objekty sú dostupné na automatizačných serveroch? Na tento účel každý automatizačný server obsahuje dokumentáciu a súbory pomocníka popisujúce jeho objektový model. Ak si vezmeme aplikácie Microsoft Office 2000, tak ide o súbory pomocníka pre programátorov používajúcich Visual Basic for Applications VBAxxx9.CHM (pre Microsoft Office 97 - VBxxx8.HLP, resp.). Upozorňujeme, že nie sú štandardne nainštalované, pretože ich potrebujú vývojári, nie bežní používatelia.

Všetky informácie o objekte požadované automatizačnými regulátormi sú obsiahnuté v knižniciach typov. Knižnice typov sú uložené v špeciálnom binárnom formáte a sú zvyčajne reprezentované ako súbory s príponami *.olb alebo *.tlb a môžu sa nachádzať aj v rámci spustiteľných súborov (*.exe) alebo dynamicky načítaných knižníc (*.dll). Knižnice typov je možné zobraziť pomocou pomôcky OleView, ktorá je súčasťou súpravy Microsoft Platform SDK, a vývojové nástroje Borland obsahujú svoje vlastné pomôcky na prezeranie knižnice typov.

Na záver tohto viac ako stručného úvodu do automatizácie sa zastavme aj pri koncepte viazania. Väzba je spôsob, akým aplikačná premenná alebo trieda ovládača odkazuje na objekt automatizácie. Existujú dve takéto metódy: neskorá väzba a skorá väzba.

Neskorá väzba znamená, že skutočný odkaz na objekt v premennej alebo triede sa objaví za behu v aplikácii radiča. Táto metóda je zvyčajne pomalšia ako predchádzajúca väzba, ale je dostupná vo všetkých vývojových nástrojoch, ktoré vám umožňujú vytvárať automatizačné ovládače, a je menej citlivá na to, či sú všetky parametre metódy uvedené pri ich volaní v kóde aplikácie ovládača. Pri neskorej väzbe sa správnosť volaní metód kontroluje v čase ich vykonania, to znamená vo fáze vykonávania aplikácie, a nie vo fáze jej kompilácie.

Včasná väzba znamená, že skutočný odkaz na objekt automatizácie sa objaví počas kompilácie. Preto kód aplikácie regulátora vyžaduje odkaz na knižnicu typov (alebo na špeciálny modul, ktorý je jej rozhraním), čo vedie ku generovaniu tried v tejto aplikácii s rovnakými vlastnosťami a metódami ako automatizácia. objektov, čo umožňuje kontrolu syntaxe možných názvov metód v čase kompilácie a prístup k pomenovaným konštantám obsiahnutým v knižnici typov. Upozorňujeme však, že nie všetky vývojové nástroje, ktoré podporujú neskorú väzbu, podporujú aj skorú väzbu.

Po dokončení exkurzie do COM a automatizácie sa vráťme k otázke, aké vývojové nástroje je vhodné použiť na vytvorenie automatizačných regulátorov.

VBA a vývojové nástroje automatizácie

Ako už bolo spomenuté vyššie, automatizačné ovládače je možné vytvárať pomocou rôznych vývojových nástrojov a ak už používate niektorý z nástrojov, ktoré podporujú tvorbu automatizačných ovládačov, môžete ho použiť. Jediná vec, ktorú by ste mali urobiť, je zistiť, či váš vývojový nástroj podporuje predbežné prepojenie, ak ho plánujete použiť. Príklady jednoduchých automatizačných ovládačov (zvyčajne pre Microsoft Word alebo Microsoft Excel), ktoré poskytujú predstavu o tom, ako sa nazývajú serverové metódy, možno zvyčajne nájsť vo väčšine moderných vývojových nástrojov.

Môžete začať ovládať objektový model automatizovaného servera zaznamenaním potrebnej postupnosti akcií vo forme makra pomocou VBA. Makro môžete vytvoriť výberom položky Nástroje | Makro | Nahrať nové makro. Zobrazenie výsledného makra v editore kódu VBA zvyčajne umožňuje pochopiť, ako by mal vyzerať kód, ktorý implementuje túto postupnosť akcií.

Po diskusii o možných nástrojoch na vývoj automatizačných radičov môžeme konečne prejsť k samotným aplikáciám Microsoft Office, k ich objektovým modelom a ich použitiu. Vývojovým nástrojom pre nižšie uvedené príklady je Borland Delphi 5, ale keďže ukazujú postupnosť volania vlastností a metód objektov Microsoft Office, prenos kódu do iných programovacích jazykov by nemal predstavovať žiadne zvláštne ťažkosti. Ak nie je uvedené inak, všetky príklady v tomto článku používajú skorú väzbu.

Objektové modely balíka Microsoft Office

Ako už bolo spomenuté vyššie, aplikácie balíka Microsoft Office poskytujú automatizačným kontrolérom prístup k ich funkciám prostredníctvom svojho objektového modelu, ktorým je hierarchia objektov.

Objekty môžu poskytovať prístup k iným objektom prostredníctvom kolekcií.

Na ilustráciu toho, ako vyzerá hierarchia objektov Microsoft Office, uvádzame malý fragment objektového modelu Microsoft Word (obr. 1):

V objektových modeloch (obr. 2)

  1. Všetky aplikácie balíka Microsoft Office majú vždy k dispozícii najdôležitejší objekt pre aplikáciu ovládača a predstavujúci samotnú aplikáciu, ktorá je automatizovaná. Pre všetky aplikácie balíka Microsoft Office sa nazýva Aplikácia a mnohé z jej vlastností a metód sú rovnaké pre všetky tieto aplikácie. Najčastejšie budeme používať tieto:
  2. Vlastnosť Viditeľné (dostupná v objekte Aplikácia všetkých aplikácií balíka Microsoft Office) umožňuje, aby sa aplikácia zobrazila na obrazovke a na paneli úloh; je True (používateľské rozhranie aplikácie je k dispozícii) alebo False (používateľské rozhranie aplikácie nie je k dispozícii; toto je predvolená hodnota). Ak potrebujete niečo urobiť s dokumentom balíka Office na pozadí bez toho, aby ste o tom informovali používateľa, môžete sa vyhnúť prístupu k tejto vlastnosti – v tomto prípade sa aplikácia nachádza iba v zozname procesov pomocou aplikácie Správca úloh.

Metóda Quit zatvorí aplikáciu balíka Office. V závislosti od toho, ktorú aplikáciu balíka Office automatizujete, môže alebo nemusí mať možnosti.

Všeobecné princípy tvorby automatizačných regulátorov

  1. Vo všeobecnosti musí regulátor automatizácie vykonávať tieto činnosti:
  2. Skontrolujte, či je spustená kópia serverovej aplikácie.
  3. V závislosti od výsledkov kontroly spustite kópiu aplikácie balíka Office, ktorú automatizujete, alebo sa pripojte k existujúcej kópii.
  4. Zviditeľnite okno serverovej aplikácie (vo všeobecnosti to nie je potrebné).
  5. Vykonajte niektoré akcie so serverovou aplikáciou (napríklad vytvorte alebo otvorte dokumenty, zmeňte ich údaje, uložte dokumenty atď.)

Zatvorte serverovú aplikáciu, ak bola jej kópia spustená týmto ovládačom, alebo sa od nej odpojte, ak je ovládač pripojený k existujúcej kópii.

Tu sme použili funkcie GetActiveOleObject a CreateOleObject na pripojenie k už spustenej kópii serverovej aplikácie alebo spustenie novej, ak server nie je spustený, čo vedie k umiestneniu odkazu na príslušný objekt Application servera do premennej variant.

Vyššie uvedená časť kódu ovládača môže v iných vývojových nástrojoch vyzerať inak - nesúvisí priamo s metódami objektov Office, pretože je určená pravidlami pre volanie štandardných OLE funkcií v Delphi (s výnimkou volaní do Viditeľného a metódy ukončenia objektu Application). A tu je všetko, čo treba vložiť namiesto komentára<Здесь выполняются другие действия с объектами приложения Office>, v rôznych vývojových nástrojoch by mali vyzerať viac-menej rovnako - pomocou vytvorenej variantnej premennej manipulujeme s metódami a vlastnosťami objektu Application.

Na záver si dovolíme jednu malú poznámku ohľadom množstva parametrov automatizačných objektových metód. Ak sa použije neskorá väzba, počet parametrov metódy uvedený v kóde sa nemusí zhodovať s ich skutočným počtom (ktorý možno nájsť v popise objektového modelu príslušnej aplikácie). V tomto prípade je celkom prijateľný nasledujúci kód:

aj keď metóda Quit objektu Application má parametre v prípade niektorých aplikácií balíka Microsoft Office (napríklad Microsoft Word).

Pri použití skorej väzby, napríklad pri vytváraní regulátorov pomocou Delphi, by ste mali byť prísnejší v definovaní parametrov – ich počet a typ musí zodpovedať popisu metód v knižnici typov. Napríklad v prípade skorej väzby by správny kód Delphi na zatvorenie dokumentu programu Word so všetkými predvolenými hodnotami bol:

App.Quit(EmptyParam, EmptyParam, EmptyParam);

Výnimkou z tohto pravidla je Visual Basic – tento vývojový nástroj vám umožňuje nemyslieť na množstvo parametrov metódy pri písaní kódu.

Po diskusii o všeobecných princípoch vytvárania automatizačných ovládačov a oboznámení sa s tým, ako sa to robí pomocou Borland Delphi, môžeme prejsť k zvažovaniu automatizácie špecifických aplikácií Microsoft Office.

Začnime jednou z najpopulárnejších súčastí tohto balíka – Microsoft Word.

Identifikátory programu a objektový model programu Microsoft Word

Všetky ostatné objekty Wordu sú takzvané interné objekty. To znamená, že nemôžu byť vytvorené sami;

teda objekt Odsek nemôže byť vytvorený oddelene od dokumentu, ktorý ho obsahuje.

Ak si pamätáte, že hlavným účelom Wordu je práca s dokumentmi, ľahko pochopíte hierarchiu jeho objektového modelu (jeho fragment je znázornený na obr. 1). Hlavným objektom v ňom, rovnako ako vo všetkých ostatných aplikáciách balíka Microsoft Office, je objekt Application, ktorý obsahuje kolekciu Documents objektov typu Document. Každý objekt dokumentu obsahuje kolekciu objektov Odseky typu Odsek, Záložky typu Záložka, Znaky typu Charakter atď. Manipulácia s dokumentmi, odsekmi, znakmi, záložkami sa v skutočnosti vykonáva prístupom k vlastnostiam a metódam týchto objektov.

Nižšie sa pozrieme na najčastejšie úlohy spojené s automatizáciou Microsoft Word. Ak narazíte na úlohu, ktorá sa nezhoduje so žiadnou z vyššie uvedených, môžete sa pokúsiť nájsť vhodný príklad vo Visual Basic v súbore pomocníka VBAWRD9.CHM, alebo, ako už bolo spomenuté vyššie, zapísať potrebnú postupnosť akcií do formulára makro a analyzovať jeho kód.

Vytváranie a otváranie dokumentov programu Microsoft Word

Na vytvorenie príkladov programu Microsoft Word môžete použiť vyššie uvedený kód na vytvorenie ovládača a upraviť ho nahradením komentárov kódom, ktorý manipuluje s vlastnosťami a metódami objektu Word.Application. Začneme vytvorením a otvorením dokumentov.

Nový dokument programu Word môžete vytvoriť pomocou metódy Add v kolekcii Documents objektu Application:

App.Documents.Add;

Ako vytvoriť vlastný dokument? Je to veľmi jednoduché - musíte zadať názov šablóny ako parameter metódy Add:

App.Documents.Add("C:\Program Files\ _ Microsoft Office\Templates\1033\Manual.dot");

Ak chcete otvoriť existujúci dokument, použite metódu Open kolekcie Documents:

App.Documents.Open("C:\MyWordFile.doc");

Všimnite si, že vlastnosť ActiveDocument objektu Word.Application ukazuje na aktuálne aktívny dokument spomedzi jedného alebo viacerých otvorených. Okrem toho je možné pristupovať k dokumentu podľa jeho sériového čísla pomocou metódy položky; Napríklad k druhému otvorenému dokumentu je možné pristupovať takto:

App.Documents.Item(2)

Všimnite si, že číslovanie členov kolekcie v balíku Microsoft Office začína jednotkou.

Dokument môžete aktivovať pomocou metódy Aktivovať:

Ďalšia vec, ktorú by ste sa mali naučiť, je uložiť dokument programu Word a zatvoriť samotný program Word.

Uložte, vytlačte a zatvorte dokumenty programu Microsoft Word

App.Documents.Item(2).Close;

App.ActiveDocument.Close ;

Metóda Close má niekoľko nepovinných (v prípade neskorej väzby) parametrov, ktoré ovplyvňujú pravidlá ukladania dokumentu.

Prvá z nich ovplyvňuje, či sa zmeny vykonané v dokumente uložia, a nadobudne tri možné hodnoty (odporúča sa popísať zodpovedajúce konštanty v aplikácii. Pozri Výpis 2):

Tretí parameter má hodnotu True alebo False a ovplyvňuje, či sa dokument prepošle ďalšiemu používateľovi e-mailom.

Ak túto funkciu nepotrebujete, môžete toto nastavenie ignorovať.

Pri použití týchto parametrov teda môžete dokument zavrieť, napríklad takto:

App.ActiveDocument.Close(wdSaveChanges, _ wdPromptUser) ;

App.ActiveDocument.Save;

Táto metóda má tiež niekoľko voliteľných (v prípade neskorého prepojenia) parametrov, z ktorých prvý je True, ak sa dokument uloží automaticky, a False, ak chcete zobraziť dialógové okno na potvrdenie od používateľa, že zmeny boli uložené (ak nejaké existujú). boli vykonané). Druhý parameter ovplyvňuje formát uloženého dokumentu a zoznam jeho možných hodnôt sa zhoduje so zoznamom hodnôt druhého parametra metódy Close.

Pripomíname, že samotný Word môžete zatvoriť pomocou metódy Quit objektu Word.Application. Táto metóda má vo všeobecnosti tri parametre, rovnaké ako parametre metódy Close objektu Document.

Výstup dokumentu do tlačového zariadenia je možné vykonať pomocou metódy PrintOut objektu Document, napríklad:

App.ActiveDocument.PrintOut;

Ak potrebujete zmeniť nastavenia tlače, mali by ste zadať hodnoty zodpovedajúcich parametrov metódy PrintOut (v prípade Microsoft Word je ich asi dvadsať).

Vkladanie textu a objektov do dokumentu a formátovanie textu

Na vloženie samotného textu do dokumentu sa však nepoužíva objekt Odsek, ale objekt Rozsah, ktorý predstavuje akúkoľvek súvislú časť dokumentu (vrátane novovytvoreného odseku). Tento objekt môže byť vytvorený rôznymi spôsobmi. Môžete napríklad zadať začiatočné a koncové znaky rozsahu (ak nejaké v dokumente existujú):

Var Rng: Variant; ... Rng:= App.ActiveDocument.Range(2,4); //2. až 4. znak

alebo uveďte číslo odseku (napríklad ten, ktorý ste práve vytvorili):

Rng:= App.ActiveDocument.Paragraphs.Item(1).Rozsah;

alebo uveďte niekoľko odsekov nasledujúcich za sebou:

Rng:= App.ActiveDocument.Range _ (App.ActiveDocument.Paragraphs.Item(3).Range.Start,_ App.ActiveDocument.Paragraphs.Item(5).Range.End)

Text môžete vložiť pomocou metód InsertBefore (pred rozsahom) alebo InsertAfter (za rozsahom) objektu Range, napríklad:

Rng.InsertAfter("Toto je text, ktorý sa má vložiť");

Okrem objektu Range je možné vkladať text pomocou objektu Selection, ktorý je vlastnosťou objektu Word.Application a predstavuje vybranú časť dokumentu (tento objekt sa vytvorí, keď používateľ vyberie časť dokumentu myšou a možno ho vytvoriť aj pomocou aplikácie ovládača).

Samotný objekt Selection je možné vytvoriť použitím metódy Select na objekt Range, napríklad:

Var Sel: Variant; ... App.ActiveDocument.Paragraphs.Item(3).Range.Select;

Vyššie uvedený príklad zvýrazňuje tretí odsek v aktuálnom dokumente.

Ak chceme do dokumentu vložiť riadok textu, či už namiesto alebo pred vybratý text, môžeme tak urobiť pomocou nasledujúceho kódu:

Var Sel: Variant; ... Sel:= App.Selection;

Sel.TypeText("Toto je text, ktorým nahradíme _ výber");

Všimnite si, že ak je vlastnosť Options.ReplaceSelection objektu Word.Application True, vybratý text bude nahradený novým textom (toto je predvolené nastavenie); ak chcete, aby bol text vložený pred vybratý fragment a nie namiesto neho, mali by ste túto vlastnosť nastaviť na False:

App.Options.ReplaceSelection:= False;

Znak konca odseku pri použití objektu Selection možno vložiť pomocou nasledujúceho útržku kódu:

Pomocou objektu Selection, pomocou jeho vlastnosti Font a vlastností objektu Font, ako sú Tučné, Kurzíva, Veľkosť,:, môžete formátovať text. Môžete napríklad vložiť riadok tučným písmom takto:

Sel.Font.Bold:= True; Sel.TypeText("Toto je text, ktorý zvýrazníme _ tučným písmom."); Sel.Font.Bold:= False; Sel.TypeParagraph;

Ak chcete na vložený text prekryť vopred určený štýl, môžete použiť vlastnosť Style toho istého objektu, napríklad:

Sel.Style:= "Nadpis 1"; Sel.TypeText("Toto je text, ktorý sa stane _ nadpisom"); Sel.TypeParagraph;

Dokumenty programu Word často obsahujú údaje z iných aplikácií.

Najjednoduchší spôsob, ako vložiť takéto údaje do dokumentu, je použiť metódu Paste objektu Range:

Var Rng: Variant; ... Rng:= App.Selection.Range;

Rng.Collapse(wdCollapseEnd);

Rng.Paste;

Prirodzene, v tomto prípade by už schránka mala obsahovať údaje, ktoré sa majú vložiť.

Ak potrebujete umiestniť časť dokumentu programu Word do schránky, môžete to urobiť pomocou metódy Kopírovať objektu Rozsah:

Var Rng: Variant; ... Rng:= App.Selection.Range;<сжать>Rng.Copy;

Ďalšia vec, ktorú sa musíte naučiť, je presunúť kurzor na požadované miesto v texte, čo urobíme v ďalšej časti.

Pohyb kurzora po texte

Pomocou metódy Collapse môžete

Objekt rozsahu alebo objekt výberu, zmenšením jeho veľkosti na nula znakov:

Rng.Collapse(wdCollapseEnd);

Parameter tejto metódy určuje, či sa nový objekt Range alebo Selection objaví na začiatku alebo na konci pôvodného fragmentu. Ak používate neskorú väzbu a váš vývojový nástroj nie je Visual Basic, musíte vo svojej aplikácii definovať príslušné konštanty:

Const wdCollapseStart = 00000001 $;

//nový objekt je na začiatku fragmentu wdCollapseEnd = $00000000;

Const //Jednotka pohybu je: wdCharacter = $00000001; //znak wdWord = $00000002; //slovo wdSentence = $00000003; //veta wdParagraph = $00000004; //odsek wdStory = 00000006 $; //časť dokumentu //napr. hlavička, //obsah atď.) wdSection = $00000008; //sekcia wdColumn = 00000009 $; //stĺpec tabuľky wdRow = $0000000A; //riadok tabuľky wdCell = $0000000C; //bunka tabuľky wdTable = $0000000F; //tabuľka

Záložky sa často používajú na navigáciu v texte. Záložku môžete vytvoriť na aktuálnej pozícii kurzora pridaním člena kolekcie Bookmarks objektu Document pomocou metódy Add, pričom ako parameter uvediete názov záložky, napríklad:

App.ActiveDocument.Bookmarks.Add("MyBookmark");

Existenciu záložky v dokumente môžete skontrolovať pomocou metódy Exists a presunúť sa na ňu pomocou metódy Goto objektov Document, Range alebo Selection:

Rng:= App.ActiveDocument.Goto(wdGoToBookmark, wdGoToNext,"MyBookmark"); Rng.InsertAfter("Text vložený za záložku");

Konštantné hodnoty pre tento príklad sú:

WdGoToBookmark = $FFFFFFFF;

//prejsť na záložku wdGoToNext = $00000002;

//hľadanie ďalšieho objektu v texte

Všimnite si, že pomocou metódy Goto sa môžete pohybovať nielen na zadanú záložku, ale aj na iné objekty (výkresy, gramatické chyby atď.) A smer pohybu môže byť tiež odlišný. Preto je zoznam konštánt, ktoré možno použiť ako parametre tejto metódy, pomerne veľký.

Vytváranie tabuliek<быстрый>Existujú dva spôsoby vytvárania tabuliek. Prvým je zavolať metódu Add kolekcie Tables objektu Document a postupne vyplniť bunky údajmi. Táto metóda je pomerne pomalá, keď sa viaže neskoro.

Var Rng: Variant; ... Rng:= App.Selection.Range;

Rng.Collapse(wdCollapseEnd);

Rng.InsertAfter("1, 2, 3");

Rng.InsertParagraphAfter;

Rng.InsertAfter("4,5,6");

Rng.InsertParagraphAfter;

Rng.InsertAfter("7,8,9");

Rng.InsertParagraphAfter;

Rng.ConvertToTable(",");

Všimnite si, že vzhľad tabuľky je možné zmeniť pomocou vlastnosti Format, ako aj pomocou vlastností kolekcie Columns, ktorá predstavuje stĺpce tabuľky, a kolekcie Rows, ktorá predstavuje riadky tabuľky objektu Table.

Prístup k vlastnostiam dokumentu

Nižšie sa pozrieme na najčastejšie úlohy spojené s automatizáciou Microsoft Excel. Ak narazíte na úlohu, ktorá nezodpovedá žiadnemu z vyššie uvedených, môžete sa pokúsiť nájsť vhodný príklad Visual Basic v súbore pomocníka VBAXL9.CHM alebo, ako v prípade Microsoft Word, zaznamenať príslušné makro a analyzovať jeho kód .

Spustite program Microsoft Excel, vytvorte a otvorte zošity

Ak chcete vytvoriť príklady pomocou programu Microsoft Excel, môžete použiť kód na vytvorenie ovládača uvedený v<Общие принципы создания контроллеров автоматизации>, pričom prvé vyhlásenie v uvedenom príklade nahradíme týmto:

AppProgID:= "Excel.Application";

a nahradiť komentáre kódom, ktorý manipuluje s vlastnosťami a metódami objektu Excel.Application. Upozorňujeme však, že pripojenie ovládača automatizácie k existujúcej verzii Excelu pomocou metódy GetActiveOleObject môže viesť k tomu, že celá strana klienta Excel bude neviditeľná (k tomu dôjde, ak existujúca kópia Excelu beží v režime, v ktorom nie je prístupné jej používateľské rozhranie ).

Dôvody tohto správania nie sú autorovi známe. Preto, ak existuje možnosť, že takáto situácia nastane, je lepšie zjednodušiť kód na vytvorenie ovládača a vždy vytvoriť novú kópiu Excelu.

Začneme sa učiť, ako vytvoriť ovládače Excel vytvorením a otvorením zošitov.

Nový excelový zošit môžete vytvoriť pomocou metódy Add kolekcie Workbooks objektu Application:

App.WorkBooks.Add;

Ak chcete vytvoriť zošit založený na šablóne, zadajte jeho názov ako prvý parameter metódy Pridať:

App.WorkBooks.Add("C:\Program Files\Microsoft _ Office\Templates\1033\invoice.xlt");

Ako prvý parameter tejto metódy môžete použiť aj nasledujúce konštanty:

Const xlWBATChart = $FFFFEFF3; //zošit pozostáva z listu s diagramom xlWBATWorksheet = $FFFFEFB9; //zošit pozostáva z listu s údajmi

V tomto prípade bude zošit obsahovať jeden list typu špecifikovaného zadanou konštantou (graf, bežný list s údajmi atď.)

Ak chcete otvoriť existujúci dokument, použite metódu Open kolekcie WorkBooks:

App.Documents.Open("C:\MyExcelFile.xls");

Všimnite si, že vlastnosť ActiveWorkBook objektu Excel.Application označuje aktuálne aktívny zošit medzi jedným alebo viacerými otvorenými. Okrem toho je možné k zošitu pristupovať podľa jeho sériového čísla, napríklad k druhému otvorenému zošitu je možné pristupovať takto:

Všimnite si, že v Delphi sa pri použití neskorej väzby syntax používaná na prístup k členom kolekcií objektov Excel líši od syntaxe použitej na prístup k objektom Word – v prípade Wordu sme použili metódu Item a v prípade Excelu pristupujte k kolekciám členov, ako keby to boli prvky poľa. Ak však používate Visual Basic, syntax používaná na prístup k členom kolekcie je rovnaká pre všetky kolekcie balíka Microsoft Office.

Zošit môžete aktivovať pomocou metódy Aktivovať:

App.WorkBooks.Activate;

Ďalšia vec, ktorú by ste sa mali naučiť, je ukladanie zošitov do súborov.

Ukladanie, tlač a zatváranie zošitov programu Microsoft Excel

Uzavretie dokumentu je možné vykonať pomocou metódy Close:

App.WorkBooks.Close;

App.ActiveWorkBook.Close;

Metóda Close má niekoľko voliteľných (v prípade neskorej väzby) parametrov, ktoré ovplyvňujú pravidlá ukladania zošita. Prvý parameter má hodnotu True alebo False a ovplyvňuje, či sa zmeny vykonané v zošite uložia.

Druhý parameter (Typ variantu) je názov súboru, do ktorého sa má zošit uložiť (ak v ňom boli vykonané zmeny). Tretí parameter, tiež True alebo False, ovplyvňuje, či sa dokument prepošle ďalšiemu používateľovi e-mailom a môže byť ignorovaný, ak sa táto funkcia nepoužíva.

App.ActiveWorkBook.Close(True,"C:\MyWorkBook.xls");

App.ActiveWorkBook.Save;

App.ActiveWorkBook.SaveAs("C:\MyWorkBook.xls");

Metóda SaveAs má viac ako tucet parametrov, ktoré ovplyvňujú, ako presne sa dokument uloží (pod akým názvom, s heslom alebo bez neho, aká je kódová stránka pre text, ktorý obsahuje atď.).

Samotný Excel môžete zatvoriť pomocou metódy Quit objektu Excel.Application. V prípade Excelu táto metóda nemá žiadne parametre.

Výstup dokumentu programu Excel do tlačového zariadenia je možné vykonať pomocou metódy PrintOut objektu WorkBook, napríklad:

App.ActiveWorkBook.PrintOut;

Ak potrebujete zmeniť nastavenia tlače, musíte zadať hodnoty zodpovedajúcich parametrov metódy PrintOut (v prípade Excelu je ich osem).

Prístup k hárkom a bunkám

K hárkom v zošite sa pristupuje pomocou kolekcie WorkSheets objektu WorkBook. Každý člen tejto kolekcie predstavuje objekt pracovného hárka. Na člena tejto kolekcie možno odkazovať podľa jeho indexového čísla, napríklad:

Vyššie uvedený príklad ilustruje, ako môžete zmeniť názov hárka zošita.

Na list zošita môžete odkazovať aj podľa názvu, napríklad:

App.WorkBooks.WorkSheets["Sheet1"].Name:= _ "Strana 1";

K jednotlivým bunkám pracovného hárka sa pristupuje pomocou kolekcie Cells objektu WorkSheet. Údaje do bunky B1 môžete pridať napríklad takto:

App.WorkBooks.WorkSheets["Sheet1"].Cells.Value:="25";

Tu prvá zo súradníc bunky ukazuje na číslo riadku, druhá - na číslo stĺpca.

Pridávanie vzorcov do buniek sa vykonáva podobným spôsobom:

App.WorkBooks.WorkSheets["Sheet1"] _ .Cells.Value:= " =SUM(B1:B2)";

Bunku môžete vymazať pomocou metódy ClearContents.

Text v bunkách sa formátuje pomocou vlastností Písmo a Interiér objektu Bunka a ich podvlastností. Napríklad nasledujúci útržok kódu zobrazuje text v bunke červeným, tučným, 16-bodovým písmom Courier na žltom pozadí:

App.WorkBooks.WorkSheets.Cells.Interior _ .Color:= clYellow; App.WorkBooks.WorkSheets.Cells.Font _ .Color:= clRed; App.WorkBooks.WorkSheets.Cells _ .Font.Name:= "Kuriér"; App.WorkBooks.WorkSheets.Cells _ .Font.Size:= 16; App.WorkBooks.WorkSheets.Cells _ .Font.Bold:= True;

ID programu

Tento článok je venovaný téme, ktorá možno nie je nová, ale ako ukazujú listy čitateľov, stále je aktuálna - automatizácia aplikácií balíka Microsoft Office. Mnoho vývojárov pri práci na svojich projektoch (bez ohľadu na to, aký vývojový nástroj - Delphi, C++Builder, Visual Basic...) často využíva služby poskytované balíkom Microsoft Office, napríklad vytváranie kontingenčných tabuliek a grafov pomocou programu Microsoft Excel, generovanie a tlač dokumentov pomocou programu Microsoft Word atď. Používatelia, ktorí sú zvyknutí na používanie aplikácií balíka Microsoft Office pri svojej každodennej práci, často trvajú na používaní takýchto služieb v aplikáciách alebo jednoducho na ukladaní správ a iných dokumentov v jednom z formátov balíka Microsoft Office. Všimnite si, že potenciálne želania tohto druhu berie Microsoft do úvahy už pomerne dlho – takmer všetko, čo môže používateľ akejkoľvek aplikácie balíka Microsoft Office urobiť pomocou ponuky, klávesnice a panela nástrojov, môže byť vykonané automaticky, teda buď z VBA alebo z aplikácie vytvorenej pomocou niektorého z vývojových nástrojov. Inými slovami, aplikácie balíka Microsoft Office sú programovateľné.

Pred diskusiou o možnostiach určitých vývojových nástrojov by ste však mali pochopiť, čo je automatizácia.

Automatizácia je jednou z možností poskytovaných technológiou Microsoft COM (Component Object Model). Bez toho, aby sme zachádzali do podrobností o implementácii tejto technológie, poznamenávame, že ju používajú aplikácie (nazývané COM servery) na poskytovanie prístupu k svojim objektom, ako aj k vlastnostiam a metódam týchto objektov, iným aplikáciám (nazývaným COM klienti ), ktoré môžu byť aj vývojovými nástrojmi . Napríklad textový procesor, ktorý je serverom COM, môže poskytnúť iným aplikáciám prístup k dokumentu, odseku alebo záložke pomocou vhodných objektov. Na pomenovanie (a identifikáciu) COM serverov sa zvyčajne používajú špeciálne reťazcové označenia - programové identifikátory (ProgID). Sú potrebné na to, aby operačný systém mohol pomocou týchto identifikátorov určiť, v ktorom adresári (alebo na ktorom počítači v lokálnej sieti, ak sa používa ten či onen spôsob vzdialeného prístupu k serveru) sa nachádza spustiteľný súbor automatizačného servera, a spustite ho na vykonanie. O tom, aké konkrétne identifikátory programu sa používajú konkrétne aplikácie balíka Microsoft Office, sa bude diskutovať v častiach venovaných týmto aplikáciám.

Z programovacieho hľadiska sa objekty automatizácie príliš nelíšia od bežných objektov, ktoré poznáme z teórie a praxe objektovo orientovaného programovania. Rovnako ako bežné objekty majú vlastnosti a metódy.

Vlastnosť je charakteristika objektu; napríklad vlastnosťou odseku (objekt Paragraph) môže byť jeho štýl. Metóda je akcia, ktorú možno vykonať s objektom (napríklad môžete uložiť dokument pomocou metódy SaveAs objektu Document).

Automatizačné servery často obsahujú sady objektov rovnakého typu, nazývané kolekcie. Napríklad textový procesor môže obsahovať zbierku dokumentov a každý dokument môže obsahovať zbierku odsekov.

Všetky informácie o objekte požadované automatizačnými regulátormi sú obsiahnuté v knižniciach typov. Knižnice typov sú uložené v špeciálnom binárnom formáte a sú zvyčajne reprezentované ako súbory s príponami *.olb alebo *.tlb a môžu sa nachádzať aj v rámci spustiteľných súborov (*.exe) alebo dynamicky načítaných knižníc (*.dll). Knižnice typov je možné zobraziť pomocou pomôcky OleView, ktorá je súčasťou súpravy Microsoft Platform SDK, a vývojové nástroje Borland obsahujú svoje vlastné pomôcky na prezeranie knižnice typov.

Na záver tohto viac ako stručného úvodu do automatizácie sa zastavme aj pri koncepte viazania. Väzba je spôsob, akým aplikačná premenná alebo trieda ovládača odkazuje na objekt automatizácie. Existujú dve takéto metódy: neskorá väzba a skorá väzba.

Neskorá väzba znamená, že skutočný odkaz na objekt v premennej alebo triede sa objaví za behu v aplikácii radiča. Táto metóda je zvyčajne pomalšia ako predchádzajúca väzba, ale je dostupná vo všetkých vývojových nástrojoch, ktoré vám umožňujú vytvárať automatizačné ovládače, a je menej citlivá na to, či sú všetky parametre metódy uvedené pri ich volaní v kóde aplikácie ovládača.

Pri neskorej väzbe sa správnosť volaní metód kontroluje v čase ich vykonania, to znamená vo fáze vykonávania aplikácie, a nie vo fáze jej kompilácie.

Včasná väzba znamená, že skutočný odkaz na objekt automatizácie sa objaví počas kompilácie. Preto aplikačný kód regulátora vyžaduje odkaz na knižnicu typov (alebo na špeciálny modul, ktorý je jej rozhraním), čo vedie ku generovaniu tried s rovnakými vlastnosťami a metódami ako automatizačné objekty v tejto aplikácii. kontrola syntaxe možné názvy metód v čase kompilácie a prístup k pomenovaným konštantám obsiahnutým v knižnici typov. Upozorňujeme však, že nie všetky vývojové nástroje, ktoré podporujú neskorú väzbu, podporujú aj skorú väzbu.

Po dokončení exkurzie do COM a automatizácie sa vráťme k otázke, aké vývojové nástroje je vhodné použiť na vytvorenie automatizačných regulátorov.

Ako už bolo spomenuté vyššie, automatizačné ovládače je možné vytvárať pomocou rôznych vývojových nástrojov a ak už používate niektorý z nástrojov, ktoré podporujú tvorbu automatizačných ovládačov, môžete ho použiť. Jediná vec, ktorú by ste mali urobiť, je zistiť, či váš vývojový nástroj podporuje predbežné prepojenie, ak ho plánujete použiť.

Príklady jednoduchých automatizačných ovládačov (zvyčajne pre Microsoft Word alebo Microsoft Excel), ktoré poskytujú predstavu o tom, ako sa nazývajú serverové metódy, možno zvyčajne nájsť vo väčšine moderných vývojových nástrojov.

Môžete začať ovládať objektový model automatizovaného servera zaznamenaním potrebnej postupnosti akcií vo forme makra pomocou VBA. Makro môžete vytvoriť výberom položky Nástroje | Makro | Nahrať nové makro.

Objektové modely balíka Microsoft Office

Zobrazenie výsledného makra v editore kódu VBA zvyčajne umožňuje pochopiť, ako by mal vyzerať kód, ktorý implementuje túto postupnosť akcií.

Po diskusii o možných nástrojoch na vývoj automatizačných radičov môžeme konečne prejsť k samotným aplikáciám Microsoft Office, k ich objektovým modelom a ich použitiu. Vývojovým nástrojom pre nasledujúce príklady je Borland Delphi 5, ale keďže poskytujú sekvenciu volaní vlastností a metód objektov Microsoft Office, prenos kódu do iných programovacích jazykov by nemal predstavovať žiadne zvláštne ťažkosti. Ak nie je uvedené inak, všetky príklady v tomto článku používajú skorú väzbu.

Ako už bolo spomenuté vyššie, aplikácie balíka Microsoft Office poskytujú automatizačným kontrolérom prístup k ich funkciám prostredníctvom svojho objektového modelu, ktorým je hierarchia objektov. Objekty môžu poskytovať prístup k iným objektom prostredníctvom kolekcií.

Vyššie uvedená časť kódu ovládača môže v iných vývojových nástrojoch vyzerať inak - nesúvisí priamo s metódami objektov Office, pretože je určená pravidlami pre volanie štandardných OLE funkcií v Delphi (s výnimkou volaní do Viditeľného a metódy ukončenia objektu Application). Ale všetko, čo má byť vložené namiesto komentára „Tu sa vykonávajú iné akcie s objektmi aplikácie Office“, by malo v rôznych vývojových nástrojoch vyzerať viac-menej rovnako – pomocou vytvorenej premennej variant manipulujeme s metódami a vlastnosťami objektu Application.

Na záver si dovolíme jednu malú poznámku ohľadom množstva parametrov automatizačných objektových metód. Ak sa použije neskorá väzba, počet parametrov metódy uvedený v kóde sa nemusí zhodovať s ich skutočným počtom (ktorý možno nájsť v popise objektového modelu príslušnej aplikácie). V tomto prípade je celkom prijateľný nasledujúci kód:

aj keď metóda Quit objektu Application má parametre v prípade niektorých aplikácií balíka Microsoft Office (napríklad Microsoft Word).

Pri použití skorej väzby, napríklad pri vytváraní regulátorov pomocou Delphi, by ste mali byť prísnejší v definovaní parametrov – ich počet a typ musí zodpovedať popisu metód v knižnici typov. Napríklad v prípade skorej väzby by správny kód Delphi na zatvorenie dokumentu programu Word so všetkými predvolenými hodnotami bol:

App.Quit(EmptyParam, EmptyParam, EmptyParam);

Výnimkou z tohto pravidla je Visual Basic – tento vývojový nástroj vám umožňuje nemyslieť na množstvo parametrov metódy pri písaní kódu.

Po diskusii o všeobecných princípoch vytvárania automatizačných ovládačov a oboznámení sa s tým, ako sa to robí pomocou Borland Delphi, môžeme prejsť k zvažovaniu automatizácie špecifických aplikácií Microsoft Office. Začnime jednou z najpopulárnejších súčastí tohto balíka – Microsoft Word.

Identifikátory programu a objektový model programu Microsoft Word

Nasledujúce objekty sú priamo dostupné pre aplikáciu regulátora:

Všetky ostatné objekty Wordu sú takzvané interné objekty.

Ak si pamätáte, že hlavným účelom Wordu je práca s dokumentmi, ľahko pochopíte hierarchiu jeho objektového modelu (jeho fragment je znázornený na obr. 1). Hlavným objektom v ňom, rovnako ako vo všetkých ostatných aplikáciách balíka Microsoft Office, je objekt Application, ktorý obsahuje kolekciu Documents objektov typu Document.

Každý objekt dokumentu obsahuje kolekciu objektov Odseky typu Odsek, Záložky typu Záložka, Znaky typu Charakter atď. Manipulácia s dokumentmi, odsekmi, symbolmi, záložkami sa v skutočnosti vykonáva prístupom k vlastnostiam a metódam týchto objektov.

Nižšie sa pozrieme na najčastejšie úlohy spojené s automatizáciou Microsoft Word. Ak narazíte na úlohu, ktorá sa nezhoduje so žiadnou z vyššie uvedených, môžete sa pokúsiť nájsť vhodný príklad vo Visual Basic v súbore pomocníka VBAWRD9.CHM, alebo, ako už bolo spomenuté vyššie, zapísať potrebnú postupnosť akcií do formulára makro a analyzovať jeho kód.

Vytváranie a otváranie dokumentov programu Microsoft Word

Na vytvorenie príkladov programu Microsoft Word môžete použiť vyššie uvedený kód na vytvorenie ovládača a upraviť ho nahradením komentárov kódom, ktorý manipuluje s vlastnosťami a metódami objektu Word.Application. Začneme vytvorením a otvorením dokumentov.

Nový dokument programu Word môžete vytvoriť pomocou metódy Add v kolekcii Documents objektu Application:

App.Documents.Add;

Ako vytvoriť vlastný dokument? Je to veľmi jednoduché - musíte zadať názov šablóny ako parameter metódy Add:

App.Documents.Add(‘C:\Program Files\ _ Microsoft Office\Templates\1033\Manual.dot’);

Ak chcete otvoriť existujúci dokument, použite metódu Open kolekcie Documents:

App.Documents.Open('C:\MyWordFile.doc');

Všimnite si, že vlastnosť ActiveDocument objektu Word.Application ukazuje na aktuálne aktívny dokument spomedzi jedného alebo viacerých otvorených. Okrem toho je možné pristupovať k dokumentu podľa jeho sériového čísla pomocou metódy položky;

Napríklad k druhému otvorenému dokumentu je možné pristupovať takto:

Všimnite si, že číslovanie členov kolekcie v balíku Microsoft Office začína jednotkou.

App.Documents.Item(2)

Všimnite si, že číslovanie členov kolekcie v balíku Microsoft Office začína jednotkou.

App.Documents.Item(1).Activate;

Ďalšia vec, ktorú by ste sa mali naučiť, je uložiť dokument programu Word a zatvoriť samotný program Word.

Uložte, vytlačte a zatvorte dokumenty programu Microsoft Word

Metóda Close má niekoľko nepovinných (v prípade neskorej väzby) parametrov, ktoré ovplyvňujú pravidlá ukladania dokumentu. Prvá z nich ovplyvňuje, či sa zmeny vykonané v dokumente uložia, a nadobudne tri možné hodnoty (odporúča sa popísať zodpovedajúce konštanty v aplikácii. Pozri Výpis 2):

Tretí parameter má hodnotu True alebo False a ovplyvňuje, či sa dokument prepošle ďalšiemu používateľovi e-mailom. Ak túto funkciu nepotrebujete, môžete toto nastavenie ignorovať.

Pri použití týchto parametrov teda môžete dokument zavrieť, napríklad takto:

App.ActiveDocument.Close(wdSaveChanges, _ wdPromptUser) ;

App.ActiveDocument.Save;

Táto metóda má tiež niekoľko voliteľných (v prípade neskorého prepojenia) parametrov, z ktorých prvý je True, ak sa dokument ukladá automaticky, a False, ak chcete zobraziť dialógové okno na získanie potvrdenia používateľa na uloženie zmien (ak nejaké boli vyrobené). Druhý parameter ovplyvňuje formát uloženého dokumentu a zoznam jeho možných hodnôt sa zhoduje so zoznamom hodnôt druhého parametra metódy Close.

Pripomíname, že samotný Word môžete zatvoriť pomocou metódy Quit objektu Word.Application.

Táto metóda má vo všeobecnosti tri parametre, rovnaké ako parametre metódy Close objektu dokumentu.

Výstup dokumentu do tlačového zariadenia je možné vykonať pomocou metódy PrintOut objektu Document, napríklad:

App.ActiveDocument.PrintOut;

Ak potrebujete zmeniť nastavenia tlače, mali by ste zadať hodnoty zodpovedajúcich parametrov metódy PrintOut (v prípade Microsoft Word je ich asi dvadsať).

Vkladanie textu a objektov do dokumentu a formátovanie textu

Na vytvorenie odsekov v dokumente môžete použiť kolekciu Odseky objektu Document, ktorá predstavuje množinu odsekov v danom dokumente. Nový odsek môžete pridať pomocou metódy Add tejto kolekcie:

App.ActiveDocument.Paragraphs.Add;

Na vloženie samotného textu do dokumentu sa však nepoužíva objekt Odsek, ale objekt Rozsah, ktorý predstavuje akúkoľvek súvislú časť dokumentu (vrátane novovytvoreného odseku). Tento objekt môže byť vytvorený rôznymi spôsobmi. Môžete napríklad zadať začiatočné a koncové znaky rozsahu (ak nejaké v dokumente existujú):

alebo uveďte číslo odseku (napríklad ten, ktorý ste práve vytvorili):

Var Rng: Variant; ... Rng:= App.ActiveDocument.Range(2,4); //2. až 4. znak

alebo uveďte niekoľko odsekov nasledujúcich za sebou:

Rng:= App.ActiveDocument.Range _ (App.ActiveDocument.Paragraphs.Item(3).Range.Start,_ App.ActiveDocument.Paragraphs.Item(5).Range.End)

Text môžete vložiť pomocou metód InsertBefore (pred rozsahom) alebo InsertAfter (za rozsahom) objektu Range, napríklad:

Rng.InsertAfter('Toto je text, ktorý sa má vložiť');

Okrem objektu Range je možné vkladať text pomocou objektu Selection, ktorý je vlastnosťou objektu Word.Application a predstavuje vybranú časť dokumentu (tento objekt sa vytvorí, keď používateľ vyberie časť dokumentu myšou a možno ho vytvoriť aj pomocou aplikácie ovládača). Samotný objekt Selection je možné vytvoriť použitím metódy Select na objekt Range, napríklad:

Var Sel: Variant; ... App.ActiveDocument.Paragraphs.Item(3).Range.Select;

Vyššie uvedený príklad zvýrazňuje tretí odsek v aktuálnom dokumente.

Ak chceme do dokumentu vložiť riadok textu, či už namiesto alebo pred vybratý text, môžeme to urobiť pomocou nasledujúceho kódu:

Var Sel: Variant; ... Sel:= App.Selection;

Sel.TypeText('Toto je text, ktorým nahradíme _ výber');

Všimnite si, že ak je vlastnosť Options.ReplaceSelection objektu Word.Application True, vybratý text bude nahradený novým textom (toto je predvolené nastavenie); ak chcete, aby bol text vložený pred vybratý fragment a nie namiesto neho, mali by ste túto vlastnosť nastaviť na False:

App.Options.ReplaceSelection:= False;

Znak konca odseku pri použití objektu Selection možno vložiť pomocou nasledujúceho útržku kódu:

Sel.TypeParagraph;

Metódy InsertBefore a InsertAfter môžete použiť na objekt Selection, rovnako ako na objekt Range. V tomto prípade, na rozdiel od predchádzajúceho, sa prilepený text stane súčasťou vybratého textového fragmentu.

Pomocou objektu Selection, jeho vlastnosti Font a vlastností objektu Font, ako sú Tučné, Kurzíva, Veľkosť,..., môžete formátovať text. Môžete napríklad vložiť riadok tučným písmom takto:

Sel.Font.Bold:= True; Sel.TypeText(‘Toto je text, ktorý zvýrazníme _ tučným písmom.‘); Sel.Font.Bold:= False; Sel.TypeParagraph;

Ak chcete na vložený text prekryť vopred určený štýl, môžete použiť vlastnosť Style toho istého objektu, napríklad:

Dokumenty programu Word často obsahujú údaje z iných aplikácií. Najjednoduchší spôsob, ako vložiť takéto údaje do dokumentu, je použiť metódu Paste objektu Range:

Var Rng: Variant; ... Rng:= App.Selection.Range;

Rng.Collapse(wdCollapseEnd);

Rng.Paste;

Prirodzene, v tomto prípade by už schránka mala obsahovať údaje, ktoré sa majú vložiť.

Ak potrebujete umiestniť časť dokumentu programu Word do schránky, môžete to urobiť pomocou metódy Kopírovať objektu Rozsah:

Ak potrebujete umiestniť časť dokumentu programu Word do schránky, môžete to urobiť pomocou metódy Kopírovať objektu Rozsah:

Var Rng: Variant; ... Rng:= App.Selection.Range;

Rng.Copy;

Ďalšia vec, ktorú sa musíte naučiť, je presunúť kurzor na požadované miesto v texte, čo urobíme v ďalšej časti.

Pomocou metódy Collapse môžete „komprimovať“ objekt Range alebo Selection, čím sa jeho veľkosť zníži na nulu:

Rng.Collapse(wdCollapseEnd);

Parameter tejto metódy určuje, či sa nový objekt Range alebo Selection objaví na začiatku alebo na konci pôvodného fragmentu. Ak používate neskorú väzbu a váš vývojový nástroj nie je Visual Basic, musíte vo svojej aplikácii definovať príslušné konštanty:

Parameter tejto metódy určuje, či sa nový objekt Range alebo Selection objaví na začiatku alebo na konci pôvodného fragmentu. Ak používate neskorú väzbu a váš vývojový nástroj nie je Visual Basic, musíte vo svojej aplikácii definovať príslušné konštanty:

Const wdCollapseStart = 00000001 $;

//nový objekt je na začiatku fragmentu wdCollapseEnd = $00000000;

//nový objekt je na konci fragmentu

Kurzor nad textom môžete presúvať pomocou metódy Move (Premiestniť) objektov Range a Selection.

Táto metóda má dva parametre. Prvý udáva, v akých jednotkách sa pohyb meria – v znakoch (štandardne), slovách, vetách, odsekoch atď. Druhý parameter udáva, o koľko jednotiek sa musíte pohnúť (toto číslo môže byť záporné, štandardne je to 1 ) . Napríklad nasledujúci útržok kódu:

Existenciu záložky v dokumente môžete skontrolovať pomocou metódy Exists a presunúť sa na ňu pomocou metódy Goto objektov Document, Range alebo Selection:

Rng:= App.ActiveDocument.Goto(wdGoToBookmark, wdGoToNext,'MyBookmark'); Rng.InsertAfter('Text vložený za záložku');

Konštantné hodnoty pre tento príklad sú:

WdGoToBookmark = $FFFFFFFF;

//prejsť na záložku wdGoToNext = $00000002;

//hľadanie ďalšieho objektu v texte

//hľadanie ďalšieho objektu v texte

Všimnite si, že pomocou metódy Goto sa môžete pohybovať nielen na zadanú záložku, ale aj na iné objekty (výkresy, gramatické chyby atď.) A smer pohybu môže byť tiež odlišný. Preto je zoznam konštánt, ktoré možno použiť ako parametre tejto metódy, pomerne veľký.

Existujú dva spôsoby vytvárania tabuliek. Prvým je zavolať metódu Add kolekcie Tables objektu Document a postupne vyplniť bunky údajmi.

Táto metóda je pomerne pomalá, keď sa viaže neskoro.

Rng.InsertAfter("1, 2, 3");

Druhým spôsobom, ktorý je oveľa rýchlejší, je vytvorenie textu z niekoľkých riadkov obsahujúcich podreťazce s oddeľovačmi (ako oddeľovač možno použiť akýkoľvek alebo takmer akýkoľvek znak, len treba vedieť, že sa neobjavuje v údajoch, ktoré budú umiestnené v budúcej tabuľke ) a potom konvertovanie takéhoto textu na tabuľku pomocou metódy ConvertToTable objektu Range. Nižšie je uvedený príklad vytvorenia tabuľky s tromi riadkami a tromi stĺpcami pomocou tejto metódy (ako oddeľovač sa používa čiarka, ktorá je prvým parametrom metódy ConvertToTable):

Var Rng: Variant; ... Rng:= App.Selection.Range;

Rng.Collapse(wdCollapseEnd);

V tejto časti sme teda študovali základné operácie, ktoré sa najčastejšie používajú pri automatizácii programu Microsoft Word. Prirodzene, možnosti automatizácie Wordu nie sú ani zďaleka vyčerpané uvedenými príkladmi, dúfam však, že na základe základných princípov vytvárania ovládačov Word uvedených v tomto článku a príslušného súboru pomocníka ich budete môcť používať - už sme videli, že nejde o komplexné identifikátory programu a objektový model Microsoft Excel

Existujú tri typy objektov programu Excel, ktoré možno vytvoriť priamo pomocou aplikácie ovládača. Tieto objekty a ich zodpovedajúce programové identifikátory sú uvedené nižšie.

Všetky ostatné objekty Excelu sú takzvané interné objekty.

Malý fragment objektového modelu Microsoft Excel je znázornený na obr. 2:

Jadrom objektového modelu Excelu je objekt Application, ktorý obsahuje kolekciu objektov Workbooks typu WorkBook. Každý objekt typu WorkBook obsahuje kolekciu objektov WorkSheets typu WorkSheet, Charts typu Chart atď. Manipulácia so zošitmi, ich hárkami, bunkami a grafmi sa v skutočnosti vykonáva prístupom k vlastnostiam a metódam týchto objektov.

Nižšie sa pozrieme na najčastejšie úlohy spojené s automatizáciou Microsoft Excel. Ak narazíte na úlohu, ktorá nezodpovedá žiadnemu z vyššie uvedených, môžete sa pokúsiť nájsť vhodný príklad Visual Basic v súbore pomocníka VBAXL9.CHM alebo, ako v prípade Microsoft Word, zaznamenať príslušné makro a analyzovať jeho kód .

Spustite program Microsoft Excel, vytvorte a otvorte zošity

Ak chcete vytvoriť príklady pomocou programu Microsoft Excel, môžete použiť kód na vytvorenie ovládača uvedený v časti „Všeobecné princípy vytvárania ovládačov automatizácie“, pričom prvé vyhlásenie v príklade nahradíte nasledujúcim:

AppProgID:= 'Excel.Application';

a nahradiť komentáre kódom, ktorý manipuluje s vlastnosťami a metódami objektu Excel.Application. Upozorňujeme však, že pripojenie ovládača automatizácie k existujúcej verzii Excelu pomocou metódy GetActiveOleObject môže viesť k tomu, že celá strana klienta Excel bude neviditeľná (k tomu dôjde, ak existujúca kópia Excelu beží v režime, v ktorom nie je prístupné jej používateľské rozhranie ). Dôvody tohto správania nie sú autorovi známe. Preto, ak existuje možnosť, že takáto situácia nastane, je lepšie zjednodušiť kód na vytvorenie ovládača a vždy vytvoriť novú kópiu Excelu.

Začneme sa učiť, ako vytvoriť ovládače Excel vytvorením a otvorením zošitov.

Nový excelový zošit môžete vytvoriť pomocou metódy Add kolekcie Workbooks objektu Application:

App.WorkBooks.Add;

Ak chcete vytvoriť zošit založený na šablóne, zadajte jeho názov ako prvý parameter metódy Pridať:

App.WorkBooks.Add(‘C:\Program Files\Microsoft _ Office\Templates\1033\invoice.xlt‘);

Ako prvý parameter tejto metódy môžete použiť aj nasledujúce konštanty:

Const xlWBATChart = $FFFFEFF3; //zošit pozostáva z listu s diagramom xlWBATWorksheet = $FFFFEFB9; //zošit pozostáva z listu s údajmi

V tomto prípade bude zošit obsahovať jeden list typu špecifikovaného zadanou konštantou (graf, bežný list s údajmi atď.)

Ak chcete otvoriť existujúci dokument, použite metódu Open kolekcie WorkBooks:

App.Documents.Open(‘C:\MyExcelFile.xls’);

Všimnite si, že vlastnosť ActiveWorkBook objektu Excel.Application označuje aktuálne aktívny zošit medzi jedným alebo viacerými otvorenými. Okrem toho je možné k zošitu pristupovať podľa jeho sériového čísla, napríklad k druhému otvorenému zošitu je možné pristupovať takto:

App.WorkBooks

Všimnite si, že v Delphi sa pri použití neskorej väzby syntax používaná na prístup k členom kolekcií objektov Excelu líši od syntaxe použitej na prístup k objektom Word – v prípade Wordu sme použili metódu Item a v prípade Excelu pristupujeme kolekcie členov, ako keby to boli prvky poľa. Ak však používate Visual Basic, syntax používaná na prístup k členom kolekcie je rovnaká pre všetky kolekcie balíka Microsoft Office.

Zošit môžete aktivovať pomocou metódy Aktivovať:

App.WorkBooks.Activate;

Ďalšia vec, ktorú by ste sa mali naučiť, je ukladanie zošitov do súborov.

Ukladanie, tlač a zatváranie zošitov programu Microsoft Excel

Uzavretie dokumentu je možné vykonať pomocou metódy Close:

App.WorkBooks.Close;

App.ActiveWorkBook.Close;

Metóda Close má niekoľko voliteľných (v prípade neskorej väzby) parametrov, ktoré ovplyvňujú pravidlá ukladania zošita. Prvý parameter má hodnotu True alebo False a ovplyvňuje, či sa zmeny vykonané v zošite uložia. Druhý parameter (Typ variantu) je názov súboru, do ktorého sa má zošit uložiť (ak v ňom boli vykonané zmeny). Tretí parameter, tiež True alebo False, ovplyvňuje, či sa dokument prepošle ďalšiemu používateľovi e-mailom a môže byť ignorovaný, ak sa táto funkcia nepoužíva.

App.ActiveWorkBook.Close(True,’C:\MyWorkBook.xls’);

App.ActiveWorkBook.Save;

App.ActiveWorkBook.SaveAs('C:\MyWorkBook.xls');

Metóda SaveAs má viac ako tucet parametrov, ktoré ovplyvňujú, ako presne sa dokument uloží (pod akým názvom, s heslom alebo bez neho, aká je kódová stránka pre text, ktorý obsahuje atď.).

Samotný Excel môžete zatvoriť pomocou metódy Quit objektu Excel.Application. V prípade Excelu táto metóda nemá žiadne parametre.

Výstup dokumentu programu Excel do tlačového zariadenia je možné vykonať pomocou metódy PrintOut objektu WorkBook, napríklad:

App.ActiveWorkBook.PrintOut;

Ak potrebujete zmeniť nastavenia tlače, musíte zadať hodnoty zodpovedajúcich parametrov metódy PrintOut (v prípade Excelu je ich osem).

Ak potrebujete zmeniť nastavenia tlače, musíte zadať hodnoty zodpovedajúcich parametrov metódy PrintOut (v prípade Excelu je ich osem).

K hárkom v zošite sa pristupuje pomocou kolekcie WorkSheets objektu WorkBook. Každý člen tejto kolekcie predstavuje objekt pracovného hárka.

Na člena tejto kolekcie možno odkazovať podľa jeho indexového čísla, napríklad:

App.WorkBooks.WorkSheets.Name:= _ 'Strana 1';

Na list zošita môžete odkazovať aj podľa názvu, napríklad:

Vyššie uvedený príklad ilustruje, ako môžete zmeniť názov hárka zošita.

App.WorkBooks.WorkSheets[‘Sheet1’].Name:= _ ‘Strana 1’;

K jednotlivým bunkám pracovného hárka sa pristupuje pomocou kolekcie Cells objektu WorkSheet. Údaje do bunky B1 môžete pridať napríklad takto:

App.WorkBooks.WorkSheets[‘Sheet1’].Cells.Value:=’25’;

Pridávanie vzorcov do buniek sa vykonáva podobným spôsobom:

Tu prvá zo súradníc bunky ukazuje na číslo riadku, druhá - na číslo stĺpca.

Bunku môžete vymazať pomocou metódy ClearContents.

Formátovanie textu v bunkách sa vykonáva pomocou vlastností Písmo a Interiér objektu Bunka a ich podvlastností. Napríklad nasledujúci útržok kódu zobrazuje text v bunke červeným, tučným, 16-bodovým písmom Courier na žltom pozadí:

App.WorkBooks.WorkSheets.Cells.Interior _ .Color:= clYellow; App.WorkBooks.WorkSheets.Cells.Font _ .Color:= clRed; App.WorkBooks.WorkSheets.Cells _ .Font.Name:= 'Curier'; App.WorkBooks.WorkSheets.Cells _ .Font.Size:= 16; App.WorkBooks.WorkSheets.Cells _ .Font.Bold:= True;

ID programu

Vytváranie programového kódu na automatizáciu určitých postupov otvára takmer neobmedzené možnosti pre vývoj a používanie aplikácií založených na Exceli.

Zaznamenajte makro

Prvým automatizačným nástrojom, s ktorým sa používateľ stretne, je takzvaný záznam makier. Po povolení tejto položky Excel automaticky vytvorí programový kód so sekvenciou používateľských operácií.

Pri posudzovaní originality riešenia je praktická využiteľnosť tejto funkcie z nášho pohľadu veľmi pochybná. Faktom je, že až na zriedkavé výnimky je opätovné použitie zaznamenaného makra bez vykonania zmien nemožné. Netrénovaný používateľ zvyčajne vidí iba súbor príkazov, ale zo zaznamenaného makra nedostane očakávaný výsledok. Okrem toho má používateľ mylný názor na jednoduchosť písania programov vo VBA.

Skutočné programovanie nemá nič spoločné s nahrávaním makier. Musíte poznať základy programovacieho jazyka a naučiť sa objektový model Excel. Mimochodom, práve pre posledný prípad je funkcia „nahrávanie makra“ užitočná ako doplnok k systému pomoci. V automaticky zaznamenanom kóde môžete rýchlo nájsť potrebné vlastnosti alebo metódy konkrétneho objektu Excel.

Makrá Excelu 4.0

Málokto sa s tým v praxi stretol, no vo verzii Excel 4.0 bolo možné vytvárať makropríkazy a vykonávať ich sekvencie. Na tento účel je určený špeciálny typ listu zošita. Makrá Excelu 4.0 (XLM) sú doteraz podporované vo všetkých verziách.

Skúste vložiť „medzinárodný hárok makier“ a napísať doň 2 príkazy (pozri obrázok). Potom spustite toto makro zadaním bunky (najjednoduchší spôsob, ako spustiť makrá, je pomocou klávesovej skratky Alt+F8):

„International Macro Sheet“ je potrebný na zaznamenávanie príkazov v angličtine, existujú aj analógy ruských príkazov.

Makrá XLM vám umožňujú vykonávať ľubovoľný príkaz programu Excel implementovaný v tom čase, ako aj vytvárať a otvárať dialógové okná. Od konca 90. rokov spoločnosť Microsoft dôrazne odporúča prepísať makrá XLM v aplikáciách Excel na programy VBA. Funkčnosť starých makier je však stále plne podporovaná.

Visual Basic for Applications 5.0

Prvá verzia Excelu podporujúca programovací jazyk Visual Basic for Applications sa objavila v roku 1993 – Excel 5.0. Pôvodne bol editor kódu špeciálny typ listu zošita.

Podporovaný bol úplný objektový model Excel, používateľ mohol rozdeliť kód do programových modulov. Prvýkrát bolo možné vizuálne vytvárať a upravovať dialógové formuláre - kolekciu Dialógové hárky. Tieto formuláre majú ovládacie prvky s vlastnými obslužnými programami udalostí. Samotné formuláre je možné otvoriť iba v modálnom režime. S DialogSheets už bolo možné vytvárať pomerne zložité možnosti používateľského rozhrania. Neskôr bola funkcia DialogSheets nahradená vlastnými formulármi UserForms. Staré dialógové formuláre vo verziách počínajúc Excelom 2000 sú podporované len z dôvodu spätnej kompatibility – nie sú ani popísané v systéme pomoci.

VBA 6

Excel 2000 (verzia 9.0) obsahuje novú verziu jazyka Visual Basic for Applications. Pridala podporu pre vlastné triedy, formuláre a procedúry obsluhy udalostí. Syntax jazyka VBA je zjednotená s hlavnými aplikáciami Microsoft Office (Excel, Word, Access, PowerPoint). Microsoft Access možno trochu vyniká, pretože podporuje vlastný editor formulárov.

Hlavné inovácie vo VBA6:

  • Vlastné triedy.
  • Prístup k štandardným obslužným programom udalostí pre hárky a zošity.
  • Schopnosť spracovávať udalosti pomocou kľúčového slova WithEvents.
  • Vlastné formuláre UserForms s novými ovládacími prvkami.
  • Schopnosť používať externé ovládacie prvky ActiveX a knižnice kódov.
  • Niekoľko nových užitočných funkcií (napr. Pripojte sa A Rozdeliť).

Okrem toho, na základe novej verzie VBA, existovali špeciálne verzie Excelu pre vývojárov, ktoré podporovali vytváranie COM DLL. Viac podrobností nájdete v článku. Doplnky.

Používanie externých knižníc

Externé knižnice formátu COM DLL (ActiveX DLL) sa pripájajú pomocou odkazov v projekte VBA (menu Nástroje\Odkazy). Vizuálne ovládacie prvky (súbory .ocx) sa pripájajú podobným spôsobom pri výbere položky ponuky T ools\Ďalšie ovládacie prvky. Pri používaní odkazov na externé súbory možno budete musieť venovať osobitnú pozornosť integrite projektu pri jeho distribúcii na iné počítače. Štandardné knižnice (napríklad MSCOMCTL.OCX) sa na klientskych počítačoch zvyčajne znova správne pripoja a automaticky vyberú odkaz na najnovšiu verziu. Problémy môžu nastať s neštandardnými knižnicami a vlastnými ovládacími prvkami ActiveX. Na kontrolu pripojenia externých COM DLL môžete teoreticky použiť kolekciu Application.VBE.ActiveVBProject.References. V praxi je však lepšie nepoužívať objekt VBE v aplikáciách, pretože prístup k nemu môže byť obmedzený nastaveniami Excelu (od verzie 2007).

Technológia COM vám umožňuje poskytnúť prístup k externým knižniciam a aplikáciám bez použitia pevných odkazov. Na tento účel sa používa takzvané neskoré viazanie predmetov. Ako rozhranie INeznámy vo VBA je typ Objekt; na vytvorenie inštancie objektu sa používa štandardný postup CreateObject a získať existujúcu inštanciu – GetObject.

Dim oWord ako množinu objektov oWord = CreateObject("Word.Document") oWord.Application.Visible = True

Na volanie funkcií a procedúr dynamických knižníc Windows (Win32 DLL) v akejkoľvek verzii VBA je podporovaná konštrukcia Vyhlásiť. Napríklad:

Funkcia verejnej deklarácie GetUserName Lib "advapi32.dll" Alias ​​​​"GetUserNameA" (ByVal sBuf As String, ByRef iSize As Long) As Boolean

Po takejto deklarácii je možné funkciu volať bežným spôsobom ako každú funkciu VBA.

Okrem štandardných procedúr a funkcií Win API môžete vyvíjať vlastné knižnice DLL a podobným spôsobom ich pripájať k projektom VBA.

VSTO

Microsoft poskytuje automatizáciu Excelu vo svojich ďalších vývojárskych produktoch. Existuje teda napríklad šablóna projektu Visual Basic 6.0 ActiveX DLL prispôsobená pre Microsoft Office. Microsoft v súčasnosti podporuje vývoj aplikácií založený na technológii .NET – Visual Studio Tools for Office (VSTO). VSTO je kolekcia projektových šablón a runtime nástrojov Visual Studio .NET na vývoj knižníc a doplnkov pre rôzne aplikácie balíka Microsoft Office.

Príklad zdrojového kódu .NET projektu pre Excel možno nájsť v Iné.

Automatizácia Excelu pre externé aplikácie

Podobne ako pri volaní externých COM DLL, aj samotný Excel môže byť cieľom automatizácie pre iné programy. Môžete napríklad zavolať a spravovať zošit pomocou skriptov vbs. Vytvorte napríklad textový súbor s nasledujúcim obsahom:

Set oExcelApp = CreateObject("Excel.Application") oExcelApp.Visible = True Set oWorkbook = oExcelApp.Workbooks.Add Set oWorksheet = oWorkbook.Worksheets.Add oWorksheet.Cells(1,1)="Ahoj"

Uložte tento súbor s príponou vbs a potom ho otvorte. Po úspešnom spustení sa otvorí Excel, vytvorí sa zošit a hárok, na ktorom sa v ľavej hornej bunke zobrazí text „Ahoj“. Podobným spôsobom môžete vytvárať veľmi zložité programy, ktoré manipulujú so súbormi programu Excel. Pri prenose kódu do skriptu vbs (alebo inej aplikácie) je spočiatku pohodlnejšie ho vytvoriť a odladiť kód v samotnom editore VBA Excelu - obsahuje kompletné informácie o syntaxi metód a vlastnostiach vstavaných objektov. Z tohto dôvodu je pri programovaní vo VBA dobrou praxou používať úplné prístupové cesty k objektu: napríklad namiesto Aktívny zošit predpisovať Aplikácia.Aktívny zošit. Tento štýl programovania vás ochráni pred skrytými chybami pri prenose kódu do iných aplikácií.

Zabezpečenie súborov

Microsoft sa z obavy o svojich používateľov snaží všetkými možnými spôsobmi zabrániť náhodnému šíreniu počítačových vírusov napísaných vo VBA. Na základe vlastných skúseností môžeme predpokladať, že takáto „starostlivosť“ prináša užívateľom často viac problémov ako zvyšuje bezpečnosť ich práce. V našej praxi práce s excelovými súbormi (od roku 1995) sme makrovírusy sa nikdy nestretli, napísaný špeciálne pre aplikácie Excel. Zároveň nevylučujeme potenciálnu možnosť napísania takýchto vírusov (môžeme sa dokonca pokúsiť vytvoriť niečo podobné), ale nie je jasné, prečo by to niekto potreboval. Používanie rovnakých skriptovacích jazykov je oveľa vážnejšou hrozbou pre operačný systém. Nehovoriac o tom, že Visual Basic nie je najlepší nástroj na písanie počítačových vírusov.

Ale zlé na tom nie je ani to, že Microsoft hrá na istotu pri hľadaní potenciálnych hrozieb. Nekonzistentnosť a neustála komplikácia postupu riadenia bezpečnosti pre projekty Excel-VBA je sklamaním. Okrem toho existuje jasný trend smerom k používaniu digitálnych podpisov od dôveryhodných vydavateľov. Získanie podpisového práva je zároveň platenou službou a samotná technológia má chyby pri implementácii so súbormi Excel (podrobnejšie v ďalšej časti).

Bezpečnostné funkcie sa historicky menili takto:

  • Excel 4.0-7.0– Nie som si úplne istý, ale zdá sa, že neexistovala žiadna ochrana pred makrovírusmi bez ďalších upozornení.
  • Excel 97 (8.0) – vo všeobecných nastaveniach sa objavil príznak ochrany.
  • Excel 2000 (9.0)– v ponuke sa objavil špeciálny dialóg Služba\Makrá s výberom jednej z troch úrovní zabezpečenia a zoznamom dôveryhodných certifikátov. Predvolená úroveň zabezpečenia je nastavená na strednú. To znamená, že pri otváraní súborov s makrami je používateľ požiadaný, aby sa sám rozhodol, aké je to bezpečné. Doplnky programu Excel sú predvolene aktivované bez akýchkoľvek ďalších upozornení.
  • Excel 2002 (10.0)– bola pridaná ďalšia „najvyššia“ úroveň zabezpečenia, ktorá umožňuje spustenie makier podpísaných dôveryhodným vydavateľom, a to iba z dôveryhodných zdrojov. Predvolená úroveň zabezpečenia je nastavená na strednú.
  • Excel 2003 (11.0)– rovnaké ako v predchádzajúcej verzii, ale predvolená úroveň zabezpečenia je nastavená na vysokú. To znamená, že makrá sú zakázané bez varovania.
  • Excel 2007 (12.0)– rozhranie nastavení bolo prepísané, objavilo sa takzvané „Centrum kontroly zabezpečenia“. Bezpečnostné stupne sa zmenili v správaní, aj keď sú stále štyri. V predvolenom nastavení sa pri otvorení súboru s makrami pod pásom s nástrojmi zobrazí okno s možnosťou aktivovať makrá. Relatívne povedané, toto je rovnaké dialógové okno na pripojenie makier, ale otvára sa nemodálne. Riešenie sa na jednej strane zdá atraktívne z hľadiska rozhrania, ale môže viesť k nekompatibilite so staršími verziami: používateľ môže napríklad nejaký čas pracovať bez makier a potom ich pripojiť. Existuje samostatná možnosť pre možnosť ovládať objekt VBE na úrovni kódu, ktorá je predvolene vypnutá. Samostatne sa konfiguruje aj zabezpečenie doplnkov Excelu, ktoré sú stále štandardne pripojené bez ďalších otázok.

Pri vývoji a distribúcii vlastných aplikácií Excel si uvedomte tieto rozdiely v nastaveniach.

Slabou stránkou nastavenia zabezpečenia je z nášho pohľadu to, že všetky nastavenia sú uložené v systémovom registri Windows v prehľadnej forme a teoreticky nie je ťažké ich meniť pri spustených iných aplikáciách. Často to robia inštalačné programy pre aplikácie Excel.

Certifikáty VBA

Počnúc balíkom Microsoft Office 2000 bola k dispozícii technológia MicrosoftAuthenticode, ktorá vám umožňuje podpisovať spustiteľný kód VBA v makrách a doplnkoch. Pre vývojára riešení to znamená možnosť spúšťať programy so zavedenou úrovňou zabezpečenia Vysoká A Veľmi vysoký.

Digitálne podpisy poskytujú podporu integrity distribuovaných riešení (nikto nemôže vykonávať zmeny v podpísanom kóde okrem vlastníka certifikátu) a overujú identitu vývojára (jednoznačne určujú autora riešenia).

Existuje niekoľko možností na získanie certifikátov:

  • Certifikát s vlastným podpisom
  • Certifikát od miestnej certifikačnej autority
  • Obchodný certifikát

Používanie certifikátu s vlastným podpisom je obmedzené predovšetkým na osobné použitie. Ak sa chcete vyhnúť trvalému varovaniu o chybe certifikátu, musíte ho pridať do zoznamu dôveryhodných zdrojov.

Ak existuje lokálna certifikačná autorita (napríklad v rámci organizácie), je možné vytvárať certifikáty vydávané touto autoritou. Ak máte Active Directory, je možné distribuovať koreňový certifikát na používateľské počítače, čo vám umožní identifikovať podpísaný kód ako dôveryhodný. Na vytvorenie lokálnej certifikačnej autority môžete použiť Windows Server Certificate Services alebo použiť riešenia založené na balíku OpenSSL.

Ak potrebujete najširšiu distribúciu riešení založených na balíku Microsoft Office, odporúča sa zakúpiť si komerčný certifikát Code Signing. Používanie známych certifikačných autorít umožní používateľom mať istotu, že dostávajú produkt od veľmi špecifického dodávateľa a v nezmenenej forme.

Pri práci s certifikátmi je však potrebné spomenúť niekoľko bodov:

  • Certifikát sa vyžaduje na počítačoch všetkých vývojárov, ktorí vykonávajú zmeny v projekte VBA.
  • Niekedy nastanú situácie, keď aj bez zmeny kódu sa podpísaný projekt považuje za zmenený. V tomto prípade je práca s makrami nemožná a jediným východiskom z tejto situácie je odstránenie podpisu v nastaveniach projektu.

Ak ste častým používateľom programu MS Excel, pravdepodobne budete musieť každý deň vykonávať rovnaký typ operácií. V tomto prípade vám makrá Excelu pomôžu zaznamenať postupnosť akcií ako súbor príkazov VBA. Táto metóda je ideálna na automatizáciu jednoduchých úloh. Pre zložitejšie úlohy môžu používatelia so zručnosťami programovania automatizovať operácie pomocou projektov VBA.

Doplnok Automation ponúka zásadne nový prístup k automatizácii rutinných úloh v Exceli:

  • Vytváranie príkazov v jednoduchej tabuľke Excel namiesto veľkých projektov VBA
  • Automatizácia aj zložitých a viacstupňových operácií
  • Automatizácia funkcií XLTools: SQL dotazy, export do CSV, redizajn tabuľky atď.
  • Vytváranie vlastných tlačidiel panela s nástrojmi
  • Pre pokročilých používateľov a vývojárov

Nemusíte byť expert na VBA. Ak niektoré z vašich obchodných procesov v Exceli zaberajú príliš veľa času, náš tím XLTools vám ich môže pomôcť automatizovať.

Pridajte "Automatizáciu" do Excelu 2019, 2016, 2013, 2010, 2007

Vhodné pre: Microsoft Excel 2019 - 2007, desktop Office 365 (32-bit a 64-bit).

Ako pracovať s doplnkom:

Ako automatizovať operácie v Exceli bez VBA [stiahnuť príručku]

Makrá VBA Excel často rastú na stovky riadkov kódu, ktorých používanie je veľmi nepohodlné. Doplnok XLTools Automation vám umožňuje písať príkazy do jednoduchých a kompaktných tabuliek Excelu. Zobrazenie tabuľky je informatívnejšie, vizuálne a jednoduchšie na úpravu. Môžete tiež pridať svoje vlastné tlačidlá na panel s nástrojmi Excelu, aby ste mohli vykonávať svoje vlastné automatizačné príkazy.

Doplnok Automation je univerzálny nástroj na automatizáciu takmer akýchkoľvek príkazov a ich sekvencií:

  • Automatizácia SQL dotazov do excelových tabuliek: SELECT, GROUP BY, JOIN ON atď.
  • Automaticky previesť kontingenčné tabuľky na plochý zoznam
  • automatický export excelových tabuliek do CSV súboru
  • Automaticky extrahujte údaje z iných excelových zošitov alebo súborov CSV
  • Automatické filtrovanie tabuliek atď.

Stačí napísať príkaz pomocou návodu > Kliknite na položku Spustiť príkazy > Hotovo! Vygenerovanie výsledku zaberie len pár sekúnd.

STIAHNUŤ NÁVOD: príklady, šablóny, syntax a komentáre po riadkoch (zip/xlsx, 260 KB).

Príklad: ako automatizovať SQL dotaz do tabuliek Excelu

Zoberme si príklad maloobchodnej predajne. Povedzme, že potrebujete pripraviť správu o predaji za štvrťrok. Môžete použiť doplnok SQL Queries a dotazovať sa na zdrojové údaje. Ale ak musíte takýto report pripravovať pravidelne, tento SQL dotaz sa dá zautomatizovať.

1. Pripravte zdrojové údaje pre dotaz SQL. Použite na ne formát tabuľky, inak SQL nebude môcť spracovať údaje:

  • Vyberte rozsah „Cenník a denník údajov o predaji“.
  • Na karte Domov kliknite na položku Formátovať ako tabuľku > Použiť štýl tabuľky.
  • Na karte Návrh pomenujte tabuľku „Sales2014“.

2. Pridajte nový hárok, napr. AutoCommands, a vytvorte tabuľku príkazov automatizácie SQL:

  • XLTools.SQLSelect- zadajte názov tímu presne takto. Názov musí byť v dvoch zlúčených bunkách.
  • SQLQuery - zadajte príkaz query ako obvykle. Poznámka: doplnok používa syntax SQLite.
    Tip: Namiesto manuálneho zadávania textu dotazu použite intuitívny editor dotazov SQL a skopírujte skript do tabuľky automatizácie.
  • ApplyTableName - zadajte názov výslednej tabuľky.
    Výsledok dotazu sa automaticky generuje vo formáte tabuľky. Ak je to potrebné, môžete proti nemu vytvoriť ďalšie otázky.
  • OutputTo – zadajte, kam sa má umiestniť výsledok dotazu.

Pozor: Aby ste zabezpečili, že SQL rozpozná všetky odkazy, nepoužívajte medzery v názvoch hárkov, zošitov a tabuliek.

3. Spustite príkaz SQL automatizácie:

  • Zvýraznite rozsah príkazov automatizácie > Kliknite na tlačidlo Spustiť príkazy na karte XLTools.
  • Hotovo, výsledok sa vygeneruje za pár sekúnd.
    V tomto príklade SQL dotaz načítal údaje za 3. štvrťrok 2014.

4. Vytvorte si vlastné tlačidlá na paneli nástrojov Excel.

V každom excelovom zošite môžete vytvoriť až 3 vlastné tlačidlá spojené s vašimi vlastnými príkazmi automatizácie:

  • Kliknite na „Vytvoriť tlačidlá“ na karte XLTools.
  • Pomenujte tlačidlo, napr. „Štvrťročná správa“ > Zadajte rozsah tabuľky príkazov.
  • Kliknite na Uložiť > Vaše tlačidlo sa zobrazí na karte XLTools.

Teraz môžete jednoducho vytvoriť štvrťročný prehľad jediným kliknutím.

Máte otázky alebo návrhy? Zanechajte komentár nižšie.