Dôležité informácie o automatizácii balíka Office na strane servera

Vzťahuje sa na
Office Products Access 2010 Excel 2010 Microsoft Outlook 2010 PowerPoint 2010 Microsoft Word 2010 Project Professional 2010 Project Standard 2010 Visio Standard 2010 Visio Professional 2010 Microsoft OneNote 2010 InfoPath 2010 Access 2013 Excel 2013 InfoPath 2013 Outlook 2013 PowerPoint 2013 Visio Professional 2013 Visio Standard 2013 Word 2013 Access 2016 Excel 2016 Outlook 2016 PowerPoint 2016 Visio Professional 2016 Visio Standard 2016 Word 2016 Office 365

Súhrn

Vývojári môžu pomocou automatizácie v balíku Microsoft Office zostaviť vlastné riešenia, ktoré využívajú možnosti a funkcie zabudované do produktu balíka Office. Hoci je možné takýto programový vývoj relatívne ľahko implementovať v klientskom systéme, môže sa vyskytnúť množstvo komplikácií, ak automatizácia prebieha z kódu na strane servera, ako sú stránky Microsoft Active Server Pages (ASP), ASP.NET, DCOM alebo systém Windows NT služba.

Tento článok popisuje komplikácie, ktorým môžu vývojári čeliť. Článok ponúka aj alternatívy k automatizácii, ktoré môžu zrýchliť výkon. Vývojári by si však mali uvedomiť, že návrhy, ktoré tento článok poskytuje, sú len na informačné účely. Spoločnosť Microsoft neodporúča ani nepodporuje automatizáciu balíka Office na strane servera.

Poznámka

V tomto kontexte sa Access Database Engine Redistributable a Access Runtime považujú za súčasti balíka Microsoft Office. Pojem "na strane servera" sa vzťahuje aj na kód spustený na pracovnej stanici s Windowsom, ak je spustený z inej pracovnej stanice systému Windows ako z interaktívnej stanice prihláseného používateľa. Napríklad kód, ktorý spustil Plánovač úloh v rámci konta SYSTEM, sa spustí v rovnakom prostredí ako kód ASP na strane servera alebo ako kód DCOM. Preto sa môže vyskytnúť veľa problémov popísaných v tomto článku. Ďalšie informácie o pracovných staniciach s Windowsom a o technológii COM nájdete v častiach Ďalšie informácie a Referencie.

Ďalšie informácie

Všetky aktuálne verzie balíka Microsoft Office boli navrhnuté, otestované a konfigurované tak, aby fungovali ako produkty koncového používateľa na klientskych pracovných staniciach. Predpokladajú interaktívnu pracovnú plochu a používateľský profil. Neposkytujú úroveň opätovného zadania alebo zabezpečenie, ktorá je potrebná na uspokojenie potrieb súčastí na strane servera, ktoré sú navrhnuté na bezobslužné spustenie.

Spoločnosť Microsoft v súčasnosti neodporúča a nepodporuje automatizáciu aplikácií balíka Microsoft Office zo žiadnych bezobslužných, neinteraktívnych klientskych aplikácií alebo komponentov (vrátane služieb ASP, ASP.NET, DCOM a NT), pretože Office môže vykazovať nestabilné správanie alebo zablokovanie, keď je Office spustený v tomto prostredí.

Ak vytvárate riešenie, ktoré sa spúšťa v kontexte na strane servera, mali by ste sa pokúsiť použiť súčasti, ktoré boli bezpečné na automatické spustenie. Alebo by ste sa mali pokúsiť nájsť alternatívy, ktoré povoľujú spustenie aspoň časti kódu na strane klienta. Ak používate aplikáciu balíka Office z riešenia na strane servera, aplikácia nebude mať veľa funkcií potrebných na úspešné spustenie. Okrem toho budete riskovať so stabilitou vášho celkového riešenia.

Problémy pri používaní automatizácie balíka Office na strane servera

Vývojári, ktorí sa pokúsia použiť Office ako riešenie na strane servera, musia mať vedomie piatich hlavných oblastí, v ktorých sa Office v dôsledku prostredia správa inak, než sa očakávalo. Ak sa má kód úspešne spustiť, musíte sa týmito problémami zaoberať a ich vplyv čo najviac minimalizovať. Pri vytváraní aplikácie tieto otázky dôkladne zvážte. Jedno riešenie nedokáže vyriešiť všetky problémy. Rôzne návrhy vyžadujú odlišné stanovenie priorít prvkov.

  • Identita používateľa: Aplikácie balíka Office preberajú identitu používateľa už pri spustení, a to aj v prípade, že ich spustí automatizácia. Aplikácie sa pokúšajú inicializovať panely s nástrojmi, ponuky, možnosti, tlačiarne a niektoré doplnky na základe nastavení používateľa v databáze Registry používateľa, ktorý spúšťa aplikáciu. Mnohé služby sa spúšťajú v rámci kont, ktoré nemajú žiadne používateľské profily (napríklad kontá SYSTEM alebo kontá IWAM_[názov servera]). Preto sa Office nemusí správne inicializovať pri spustení. V tomto prípade Office vráti chybu vo funkcii CreateObject alebo CoCreateInstance. Aj napriek tomu, že aplikáciu balíka Office možno spustiť, ostatné funkcie nemusia fungovať správne, ak neexistuje žiadny používateľský profil.
  • Interaktivita s pracovnou plochou: Aplikácie balíka Office predpokladajú, že sú spustené v rámci interaktívnej pracovnej plochy. Za určitých okolností je na správne fungovanie niektorých automatizačných funkcií potrebné, aby boli aplikácie viditeľné. Ak sa vyskytne neočakávaná chyba, alebo ak je na dokončenie funkcie potrebný nešpecifikovaný parameter, balík Office je navrhnutý tak, aby používateľovi zobrazil výzvu prostredníctvom modálneho dialógového okna, v ktorom sa ho opýta, čo chce používateľ urobiť. Modálne dialógové okno na neinteraktívnej pracovnej ploche nie je možné zavrieť. Preto toto vlákno prestane reagovať (zablokuje sa) na neurčito. Hoci určité postupy kódovania môžu pomôcť znížiť pravdepodobnosť výskytu tohto problému, nedokážu mu úplne predísť. Táto skutočnosť sama osebe spôsobuje, že spúšťanie aplikácií balíka Office z prostredia na strane servera je riskantné a nepodporované.
  • Opätovné zadanie a škálovateľnosť: Súčasti na strane servera musia byť vysoko opätovne zapojené viacvláknové komponenty COM s minimálnou réžiou a vysokou priepustnosťou pre viacerých klientov. Aplikácie balíka Office sú takmer vo všetkých ohľadoch presným opakom. Aplikácie balíka Office sú automatizačné servery založené na službe STA, ktoré nie sú opätovne entrantné, a sú navrhnuté tak, aby jednému klientovi poskytovali rôznorodé, ale náročné funkcionality, ktoré si vyžadujú množstvo prostriedkov. Aplikácie ponúkajú malú škálovateľnosť ako riešenie na strane servera. Okrem toho majú aplikácie pevne stanovené limity dôležitých prvkov, ako je napríklad pamäť. Tieto položky nie je možné zmeniť prostredníctvom konfigurácie. Ešte dôležitejšie je, že aplikácie používajú globálne prostriedky, ako sú súbory priradené v pamäti, globálne doplnky alebo šablóny a zdieľané automatizačné servery. To môže obmedziť počet inštancií, ktoré môžu byť spustené súbežne, a môže to viesť k súbehovým podmienkam, ak sú aplikácie nakonfigurované v prostredí s viacerými klientmi. Vývojári, ktorí plánujú spustiť viac než jednu inštanciu ľubovoľnej aplikácie balíka Office súčasne, by mali zvážiť združovanie alebo serializáciu prístupu k aplikácii balíka Office, aby sa vyhli možným zablokovaniam alebo poškodeniu údajov.
  • Odolnosť a stabilita: Balíky Office 2000, Office XP, Office 2003 a Office 2007 používajú technológiu Inštalátor systému Microsoft Windows (MSI), ktorá koncovému používateľovi zjednodušuje inštaláciu a samoobslužnú opravu. MSI zavádza koncept "nainštalovať pri prvom použití". To umožňuje dynamickú inštaláciu alebo konfiguráciu funkcií počas spustenia pre systém alebo častejšie pre konkrétneho používateľa. V prostredí na strane servera sa tým spomaľuje výkon a zvyšuje sa pravdepodobnosť zobrazenia dialógového okna so žiadosťou od používateľa o schválenie inštalácie alebo poskytnutie inštalačného disku. Hoci je to navrhnuté tak, aby sa zvýšila odolnosť balíka Office ako produktu pre koncového používateľa, implementácia funkcií MSI v balíku Office je v prostredí na strane servera kontraproduktívna. Okrem toho, pri používaní balíka Office na strane servera nemožno vo všeobecnosti zabezpečiť stabilitu balíka Office, pretože balík nebol navrhnutý ani testovaný na tento typ použitia. Používanie balíka Office ako súčasti služby na sieťovom serveri môže znížiť stabilitu počítača, a tým aj stabilitu celej siete.
  • Zabezpečenie na strane servera: Aplikácie balíka Office nikdy neboli určené na použitie na strane servera. Aplikácie balíka Office preto neberú do úvahy problémy so zabezpečením, ktorým čelia distribuované súčasti. Office neoveruje prichádzajúce požiadavky. Office vás tiež nechráni pred neúmyselným spustením makier ani pred spustením iného servera, ktorý môže spúšťať makrá, z kódu na strane servera. Neotvárajte súbory, ktoré sú nahraté na server z anonymnej webovej lokality. Na základe naposledy nastavených nastavení zabezpečenia môže server spúšťať makrá v kontexte správcu alebo systému s úplnými oprávneniami, a tým ohroziť vašu sieť. Okrem toho Office používa mnoho súčastí na strane klienta (napríklad Simple MAPI, WinInet a MSDAIPP), ktoré dokážu ukladať informácie overenia klienta do vyrovnávacej pamäte na zrýchlenie spracovania. Ak sa Office automatizuje na strane servera, jedna inštancia môže obsluhovať viac ako jedného klienta. Ak sú informácie o overení pre túto reláciu uložené vo vyrovnávacej pamäti, jeden klient môže použiť poverenia vo vyrovnávacej pamäti iného klienta. Preto môže klient získať neudelené povolenia na prístup zosobnením iných používateľov.

Okrem technických problémov treba zvážiť aj licenčné otázky. Súčasné licenčné pokyny zabránia používaniu aplikácií balíka Office na serveri na vybavenie požiadaviek klientov, pokiaľ títo klienti sami nemajú licencované kópie balíka Office. Používanie automatizácie na strane servera na poskytovanie funkcií balíka Office pracovným staniciam bez licencie nie je zahrnuté v licenčnej zmluve koncového používateľa (EULA).

Okrem týchto problémov sa pri pokuse o automatizáciu balíka Office na strane servera môže vyskytnúť niektorá z nasledujúcich bežných chýb:

  • Funkcie CreateObject a CoCreateInstance vrátia jedno z nasledujúcich chybových hlásení počas spustenia a nie je možné ich spustiť pre automatizáciu.
    Správa 1

    Poznámka

    Chyba 429 počas spustenia: Súčasť ActiveX nedokáže vytvoriť objekt

    Správa č. 2

    Poznámka

    Chyba 70 počas spustenia: Povolenie odmietnuté

    Správa 3

    Poznámka

    CO_E_SERVER_EXEC_FAILURE (0x80080005): Spustenie servera zlyhalo

    Správa 4

    Poznámka

    E_ACCESSDENIED (0x80070005): Prístup odmietnutý

  • Po otvorení dokumentu balíka Office sa zobrazí jedno z nasledujúcich chybových hlásení.
    Správa 1

    Poznámka

    Chyba 5981 (0x800A175D režimu runtime): Nepodarilo sa otvoriť úložisko makra

    Správa č. 2

    Poznámka

    Chyba "1004": Metóda '~' objektu '~' zlyhala

  • Funkcie CreateObject a CoCreateInstance prestanú reagovať a nikdy sa nedokončia, alebo návrat trvá dlho. Na niektorých serveroch je vytváranie rýchle, ale v denníku udalostí Windowsu sa zobrazujú chyby 1004, ktoré označujú, že aplikácia bola zastavená.

  • Niektoré funkcie neočakávane zlyhajú alebo prestanú reagovať na neurčito z dôvodu upozornenia používateľa alebo iného dialógového okna, ktoré vyžaduje pozornosť používateľa.

  • Spustenie viacerých požiadaviek alebo záťažové testovanie spôsobí zlyhanie, prestane reagovať alebo zlyhá pri vytváraní alebo ukončení aplikácie balíka Office. Keď sa to stane, proces zostane spustený v pamäti a nedá sa ukončiť, alebo všetky inštancie aplikácie, ktorá sa automatizuje, od tohto okamihu zlyhajú.

Okrem uvedených problémov alebo hlásení sa môžu zobraziť aj iné problémy alebo hlásenia, no zvyčajne sa vyskytujú v dôsledku piatich hlavných problémov, ktoré sú uvedené vyššie v tomto článku. 

Alternatívy k automatizácii na strane servera

Spoločnosť Microsoft dôrazne odporúča, aby vývojári v prípade, že potrebujú vyvíjať serverové riešenia, našli alternatívy k automatizácii balíka Office. Vzhľadom na obmedzenia návrhu balíka Office nie sú zmeny konfigurácie balíka Office dostatočné na vyriešenie všetkých problémov. Microsoft dôrazne odporúča niekoľko alternatív, ktoré nevyžadujú inštaláciu balíka Office zo servera a ktoré dokážu vykonávať väčšinu bežných úloh efektívnejšie a rýchlejšie ako automatizácia. Pred zapojením balíka Office ako súčasti na strane servera do projektu zvážte alternatívy.

Väčšina úloh automatizácie na strane servera zahŕňa vytváranie alebo úpravu dokumentov. Balík Office 2007 podporuje nové formáty súborov Open XML, ktoré vývojárom umožňujú vytvárať, upravovať, čítať a transformovať obsah súborov na strane servera. Tieto formáty súborov používajú priestor názvov System.IO.Package.IO v rozhraní Microsoft .NET 3.x Framework na úpravu súborov balíka Office bez použitia samotných klientskych aplikácií balíka Office. Tento spôsob je odporúčaný a podporovaný spôsob spracovávania zmien v súboroch balíka Office zo služby.

Formáty súborov Open XML sú verejným štandardom. 

Spoločnosť Microsoft poskytuje súpravu SDK na manipuláciu s formátmi súborov Open XML z rozhrania .NET 3.x Framework. Ďalšie informácie o súprave SDK a o používaní súpravy SDK na vytváranie alebo úpravu súborov Open XML nájdete na nasledujúcich webových lokalitách siete webová lokalita Microsoft Developer Network (MSDN):

Dokumentácia k súprave Open XML SDK

Postup: Manipulácia s dokumentmi formátov Office Open XML Formats

Manipulácia s Files programu Word 2007 pomocou objektového modelu Open XML (časť 1 z 3)

Manipulácia s Files programu Word 2007 pomocou objektového modelu Open XML (časť 2 z 3)

Manipulácia s Files programu Word 2007 pomocou objektového modelu Open XML (časť 3 z 3)

Manipulácia so súbormi programov Excel 2007 a PowerPoint 2007 Files pomocou objektového modelu Open XML (časť 1 z 2)

Manipulácia so súbormi programov Excel 2007 a PowerPoint 2007 Files pomocou objektového modelu Open XML (časť 2 z 2)

Vytváranie riešení Server-Side generovania dokumentov pomocou objektového modelu Open XML (časť 1 z 2)

Budovanie riešení na generovanie Server-Side dokumentov pomocou objektového modelu Open XML (2. časť z 2)

Keď streamujete súbory Open XML zo stránky ASP alebo zo ASP.NET, musíte pre obsah, ktorý streamujete, poskytnúť správny typ rozšírenia viacúčelovej internetovej pošty (MME). Zoznam typov MIME pre súbory balíka Office 2007 je možný na nasledujúcej webovej lokalite:

Formát súborov balíka Office 2007 Typy MIME pre streamovanie obsahu HTTP

Ak cielite iba na klientov starších ako Office 2007 a nechcete v riešení vyžadovať použitie formátu Open XML, môžete použiť iné nebinárne formáty súborov balíka Office, napríklad HTML, XML a RTF. Tieto súbory potom môžete vysielať do klienta pomocou typu MIME tak, aby sa výsledný text zobrazil v balíku Office. Dokument možno upravovať, ukladať a dokonca aj vracať na server pomocou ASP na serveri.

Ďalšie informácie o týchto témach a príklady, ktoré ukazujú, ako ich implementovať, získate po kliknutí na nasledujúce čísla článkov databázy Microsoft Knowledge Base:

198703 Ako automatizovať Excel z klientskeho skriptu VBScript

Ako vytvoriť dotaz na údaje programu Excel a aktualizovať ich pomocou objektov ADO od poskytovateľa služieb ASP

286023 Používanie súčasti VB ActiveX na automatizáciu Word z Internet Explorera
 

Ak vaša firma vyžaduje vytváranie binárnych formátov súborov balíka Office 97, Office 2000, Office XP a Office 2003 na strane servera, dodávatelia tretích strán vám poskytujú súčasti, ktoré vám môžu pomôcť. Spoločnosť Microsoft neposkytuje žiadne takéto súčasti, takže riešenie si budete musieť vytvoriť sami alebo si ho zakúpiť od dodávateľa tretej strany. K dispozícii je mnoho rôznych produktov tretích strán. Mali by ste preskúmať každé riešenie tak, aby čo najlepšie vyhovovalo potrebám dodávateľa vášho podniku.

Ak chcete vytvoriť vlastné riešenie, ktoré priamo upravuje binárne formáty súborov balíka Office 97, Office 2000, Office XP a Office 2003, môžete špecifikácie formátov súborov získať bezplatne v rámci podmienok OSP (Microsoft Open Specification Promise). Pre dokumentáciu alebo produkty, ktoré vytvoríte, nie je k dispozícii žiadna technická podpora, dokumentácia je však k dispozícii. 

Riešenia na strane servera môžu tiež umožniť používateľom nahrávať súbory a potom ich server vykresliť na zobrazenie na webe alebo na iných médiách. Spoločnosť Microsoft v súčasnosti pracuje na ponúkaní takýchto funkcií a poskytuje skorú verziu tejto funkcie v službách Microsoft Excel Services.

Excel Services je nová serverová technológia, ktorá je súčasťou Microsoft Office SharePoint Servera 2007 a umožňuje načítať, vypočítať a zobraziť excelové zošity na Office SharePoint Serveri 2007. Ďalšie informácie o službách Excel Services nájdete na nasledujúcich webových lokalitách MSDN (webová lokalita Microsoft Developer Network):

Prehľad služieb Excel Services

Návod: Vývoj vlastnej aplikácie pomocou služieb Excel Web Services

Vytváranie podnikových aplikácií pomocou služieb Excel Services a formátov Office Open XML Služba Word Automation Services je nová aplikácia služby na serveri SharePoint Server 2010. Služba Word Automation Services poskytuje bezobslužnú konverziu dokumentov na strane servera do formátov, ktoré podporuje klientska aplikácia Microsoft Word.

Prehľad služby Word Automation Services

Predstavujeme služby Word Automation Services Musíte zhodnotiť, ktoré z možností popísaných v tomto článku vyhovujú vašim potrebám a ako najlepšie nasadiť vaše riešenie. Informácie, ktoré sú v tomto článku uvedené, nezaručia vyriešenie všetkých problémov pre všetkých klientov. Odporúčame vám, aby ste svoje riešenie pred nasadením dôkladne otestovali.