Suvestinė
Kūrėjai gali naudoti automatizavimą programoje "Microsoft Office", kad sukurtų tinkintus sprendimus, kurie naudoja "Office" produkto galimybes ir funkcijas. Nors tokią programinę plėtrą galima įgyvendinti kliento sistemoje gana paprastai, gali įvykti daug komplikacijų, jei automatizavimas vyksta iš serverio pusės kodo, pvz., "Microsoft" aktyviųjų serverio puslapių (ASP), ASP.NET, DCOM arba "Windows NT" tarnybos. Šiame straipsnyje aptariamos komplikacijos, kurias gali susidurti kūrėjai. Straipsnyje taip pat siūlomos automatizavimo alternatyvos, kurios gali pagreitinti veikimą. Tačiau kūrėjai turėtų žinoti, kad šiame straipsnyje pateikiami pasiūlymai skirti tik informaciniams tikslams. "Microsoft" nerekomenduoja ir nepalaiko serverio "Office" automatizacijos.
Pastaba.
Šiame kontekste "Access" duomenų bazės modulio Redistributable ir "Access Runtime" laikomos "Microsoft Office" komponentai. Terminas "serverio pusė" taip pat taikomas kodui, kuris veikia "Windows" darbo vietoje, jei kodas veikia iš "Windows" darbo vietos, išskyrus prisijungusio vartotojo interaktyviąją stotį. Pvz., kodą, kurį paleidžia užduočių planavimo priemonė pagal sistemos abonementą, veikia toje pačioje aplinkoje kaip ir "serverio pusės" ASP kodas arba DCOM kodas. Todėl gali kilti daug klausimų, kurie šiame straipsnyje aprašomi. Daugiau informacijos apie "Windows" darbo vietas ir apie COM ieškokite skyriuje "daugiau informacijos" ir skyriuje "nuorodos".
Daugiau informacijos
Visos dabartinės "Microsoft Office" versijos buvo sukurtos, išbandytos ir sukonfigūruotos naudoti kaip galutinių vartotojų produktus kliento darbo vietoje. Jie prisiima interaktyvų darbalaukį ir vartotojo profilį. Jie neteikia reentrancy arba saugumo lygio, kuris būtinas norint patenkinti serverio komponentų poreikius, skirtus veikti be priežiūros. "Microsoft" šiuo metu nerekomenduoja ir nepalaiko, automatizuoja "Microsoft Office" taikomąsias programas bet kurioje be priežiūros, ne interaktyvioje kliento taikomojoje programoje arba komponente (įskaitant ASP, ASP.NET, DCOM ir NT paslaugas), nes "Office" gali Rodyti nestabilią elgseną ir (arba) aklavietę, kai "Office" veikia šioje aplinkoje. Jei kuriate sprendimą, kuris veikia serverio kontekste, turėtumėte pabandyti naudoti komponentus, kurie yra saugūs naudoti nedialoginį vykdymą. Arba galite pabandyti surasti alternatyvas, leidžiančias bent dalį kodo paleisti kliento pusėje. Jei naudojate "Office" taikomąją programą iš serverio pusės sprendimo, taikomajai programai trūksta daug būtinų funkcijų, kad būtų galima sėkmingai vykdyti. Be to, jūs būsite rizikinga, kai jūsų bendrasis sprendimas bus stabilus.
Problemos naudojant serverio "Office" automatizavimą
Kūrėjai, kurie bandys naudoti "Office" serverio tirpale, turi žinoti penkias pagrindines sritis, kuriose "Office" elgiasi kitaip nei tikėtasi dėl aplinkos. Jei jūsų kodas turi būti sėkmingai vykdomas, turite išspręsti šias problemas ir kuo labiau sumažinti jų pasekmes. Kai kuriate taikomąją programą, atidžiai apsvarstykite šias problemas. Vienas sprendimas negali išspręsti visų problemų. Skirtingi dizainai reikalauja, kad elementai būtų prioritetus priskirti skirtingai.
-
Vartotojo tapatybė: "Office" taikomosios programos prisiima vartotojo tapatybę, kai programos vykdomos, net kai programos automatizuojamos. Taikomosios programos bando inicijuoti įrankių juostas, meniu, parinktis, spausdintuvus ir kai kuriuos papildinius, pagrįstus vartotojui, kuris paleidžia taikomąją programą, vartotojo registro avilio parametruose. Daugelis tarnybų paleidžiamos pagal paskyras, kuriose nėra vartotojų profilių (pvz., sistemos abonementas arba IWAM_ [SERVERNAME] paskyros). Todėl "Office" gali netinkamai inicijuoti paleisties metu. Esant tokiai situacijai, funkcija Office pateikia klaidą funkcija CreateObject arba funkcija CoCreateInstance . Net jei "Office" taikomoji programa gali būti paleista, kitos funkcijos gali veikti netinkamai, jei nėra vartotojo profilio.
-
Interaktyvumo su darbalaukiu: "Office" taikomosios programos mano, kad jos vykdomos interaktyviame darbalaukyje. Esant tam tikroms aplinkybėms, norint tinkamai veikti kai kurioms automatizavimo funkcijoms, gali reikėti matyti taikomąsias programas. Jei įvyksta netikėta klaida arba jei funkcijai atlikti reikia nenurodyto parametro, "Office" skirtas paraginti vartotoją su modaliniu dialogo langu, kuris prašo vartotojo, ką nori atlikti vartotojas. Negalima atmesti modalaus dialogo lango neinteraktyviame darbalaukyje. Todėl, kad gija nebeatsako (užstringa) neribotai. Nors kai kurios kodavimo praktikos gali padėti sumažinti šios problemos tikimybę, ši praktika negali visiškai išvengti problemos. Vien tik šis faktas leidžia naudoti "Office" taikomąsias programas iš serverio pusės aplinkos rizikinga ir nepalaikoma.
-
Reentrancy ir išplečiamumas: serverio komponentai turi būti labai atėjusiam, kelių gijų com komponentus, turinčius minimalų ir aukštą pralaidumą keliems klientams. "Office" taikomosios programos beveik visais atžvilgiais yra visiškai priešingos. "Office" taikomosios programos yra neprisijungusiems, su "Office" pagrįstais automatizavimo serveriais, skirtais teikti įvairias, tačiau intensyviai išteklius naudojančias vieno kliento funkcijas. Taikomosios programos siūlo nedidelį mastelio keitimo kaip serverio sprendimą. Be to, programos turi nustatytus apribojimus svarbiems elementams, pvz., atminčiai. Negalima keisti konfigūravimo. Dar svarbiau, kad taikomosios programos naudoja visuotinius išteklius, pvz., atminties susietus failus, visuotinius papildinius arba šablonus ir bendrinamus automatikos serverius. Tai gali riboti atvejų, kurie gali veikti vienu metu, skaičių ir gali lemti konkuravimo sąlygas, jei programos sukonfigūruotos kelių klientų aplinkoje. Kūrėjai, planuojantys vykdyti daugiau nei vieną bet kurios "Office" taikomosios programos egzempliorių, turi apsvarstyti "sutelkimą" arba serializing prieigą prie "Office" programos, kad išvengtumėte galimų aklaviečių arba duomenų sugadinimo.
-
Atkuriamumas ir stabilumas: "Office 2000", "Office XP", "Office 2003" ir "Office 2007" naudoja "Microsoft Windows Installer" (MSI) technologiją, kad būtų lengviau įdiegti ir savarankiškai atkurti galutinį vartotoją. MSI pristato sąvoką "įdiegti naudojant pirmą kartą". Ši funkcija leidžia dinamiškai įdiegti arba konfigūruoti sistemos vykdymo metu arba dažniau konkrečiam vartotojui. Serverio aplinkoje dėl to sulėtėja našumas ir padidėja tikimybė, kad gali būti rodomas dialogo langas, kuris prašo vartotojo patvirtinti diegimą arba pateikti diegimo diską. Nors tai yra skirta padidinti "Office" atkuriamumą kaip galutinio vartotojo produktą, "Office" MSI funkcijų diegimas sukelia priešingus rezultatus serverio aplinkoje. Be to, Office stabilumą apskritai negalima užtikrinti, kai "Office" veikia serverio pusėje, nes ji nebuvo sukurta arba išbandyta šio tipo naudojimui. Naudojant "Office" kaip paslaugos komponentą tinklo serveryje, gali sumažėti šio kompiuterio stabilumas, todėl gali sumažėti viso tinklo stabilumas.
-
Serverio saugos: "Office" taikomosios programos nebuvo skirtos naudoti serveryje. Todėl "Office" taikomosiose programose neatsižvelgiama į saugos problemas, kurios išplatintų komponentus. "Office" neautentifikuoja gaunamų užklausų. "Office" taip pat neapsaugo jūsų nuo netyčinio makrokomandų paleidimo arba nuo kito serverio, kuris gali vykdyti makrokomandas, iš jūsų serverio kodo. Neatidarykite į serverį nusiųstų failų iš anoniminės žiniatinklio svetainės. Atsižvelgiant į paskutinį nustatytus saugos parametrus, serveris gali vykdyti makrokomandas pagal administratorių arba sistemos kontekstą su visomis teisėmis ir todėl gali kelti pavojų jūsų tinklui. Be to, "Office" naudoja daug kliento komponentų (pvz., paprastas MAPI, WinInet ir MSDAIPP), kurie gali sukaupti kliento autentifikavimo informaciją greičiui apdoroti. Jei "Office" yra automatizuotas serverio pusėje, vienas egzempliorius gali aptarnauti daugiau nei vieną klientą. Jei autentifikavimo informacija buvo įrašyta to seanso metu, vienas klientas gali naudoti kito kliento talpyklinius kredencialus. Todėl klientas gali gauti nesuteiktas prieigos teises, apsimetimas kitais vartotojais.
Be techninių problemų, taip pat turite apsvarstyti licencijavimo problemas. Dabartinės licencijavimo gairės neleidžia, kad "Office" taikomosios programos nebūtų naudojamos serveryje su tarnybos kliento užklausomis, nebent patys klientai turi licencijuotas "Office" kopijas. Naudojant serverio automatizavimą, kad būtų galima teikti "Office" funkcijas nelicencijuotoms darbo vietoms, netaikoma galutinio vartotojo licencinė sutartis (EULA). Be šių problemų, kai bandote automatizuoti "Office Server", galite susidurti su viena iš šių dažniausių klaidų:
-
Funkcija CreateObject yra ir funkcija CoCreateInstance grąžina vieną iš šių vykdymo laiko klaidų pranešimo ir negali būti paleista automatizavimui.
1 pranešimas
Vykdymo laiko klaida "429": "ActiveX" komponentas negali kurti objekto
2 pranešimas
Vykdymo laiko klaida "70": teisių atsisakymas
3 pranešimas
CO_E_SERVER_EXEC_FAILURE (0x80080005): serverio vykdymas nepavyko
4 pranešimas
E_ACCESSDENIED (0x80070005): prieiga uždrausta
-
Kai atidarote "Office" dokumentą, gaunate vieną iš šių klaidų žinučių.
1 pranešimas
Vykdymo laiko klaida "5981" (0x800A175D): nepavyko atidaryti makrokomandos saugyklos
2 pranešimas
Vykdymo laiko klaida "1004": nepavyko "~" objekto "~" metodas
-
Funkcija CreateObject yra ir funkcija CoCreateInstance nustoja atsakyti ir nebaigiama, arba ilgai užtrukti. Kai kuriuose serveriuose kūrimas Greitas, tačiau "Windows" įvykių žurnalų "1004" klaidos rodoma, kad taikomoji programa buvo sustabdyta.
-
Kai kurios funkcijos netikėtai nepavyksta arba nustoja veikti neribotai dėl vartotojo įspėjimo arba kito dialogo lango, kuriam reikia vartotojų dėmesio.
-
Paleidus kelių užklausų arba testavimo nepalankiausiomis sąlygomis kodą, nepavyksta atsakyti, nebeatsakyti arba sugesti "Office" taikomosios programos kūrimas arba nutraukimas. Kai taip nutinka, procesas paliekamas atmintyje ir jo negalima nutraukti, arba visi taikomosios programos, kuri yra automatizuota su šiuo tašku, egzemplioriai.
Kitos problemos ar laiškai gali būti rodomi be čia išvardytų, tačiau šios problemos paprastai kyla dėl penkių pagrindinių problemų, išvardytų šiame straipsnyje.
Serverio automatizavimo alternatyvos
"Microsoft" primygtinai rekomenduoja kūrėjams rasti "Office" automatizavimo alternatyvas, jei reikia sukurti serverio sprendimus. Dėl "Office" dizaino apribojimų nepakanka norint išspręsti visas problemas. "Microsoft" primygtinai rekomenduoja keletą alternatyvų, kurioms nereikia įdiegti "Office", ir kurios gali atlikti Dažniausias užduotis efektyviau ir greičiau nei automatizavimas. Prieš pradėdami naudoti "Office" kaip projekto serverio komponentą, apsvarstykite alternatyvas. Daugelis serverio automatizavimo užduočių susijusios su dokumentų kūrimu arba redagavimu. "Office 2007" palaiko naujus "XML" failų formatus, kurie suteikia kūrėjams kurti, redaguoti, skaityti ir transformuoti failo turinį iš serverio pusės. Šie failų formatai naudoja System.io.Package.io vardų sritį "Microsoft .net 3. x" sistemoje, jei norite redaguoti "Office" failus nenaudodami "Office" kliento programų. Tai rekomenduojamas ir palaikomas "Office" failų keitimo iš tarnybos būdas. "Atidaryti XML" failų formatai yra viešasis standartas.
"Microsoft" teikia SDK, skirtą atidaryti XML failų formatus iš ".NET 3. x" sistemos. Daugiau informacijos apie SDK ir apie tai, kaip naudoti SDK norint kurti arba redaguoti atidarytus XML failus, rasite apsilankę šiose "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėse:
"XML" SDK dokumentacijos atidarymas
Kaip: valdyti "Office" XML formatų dokumentus
"Word 2007" failų manipuliavimas naudojant "atidarykite XML" objekto modelį (1 dalis)
"Word 2007" failų manipuliavimas naudojant "atidarykite XML" objekto modelį (2 dalis)
"Word 2007" failų manipuliavimas naudojant "atidarykite XML" objekto modelį (3 dalis)
Serverio dokumentų generavimo sprendimų kūrimas naudojant "atidarykite XML" objekto modelį (2 dalis)
Serverio dokumentų generavimo sprendimų kūrimas naudojant "atidarykite XML" objekto modelį (2 dalis)
Srautu atidarę XML failus iš ASP arba ASP.NET, turite pateikti tinkamą daugiafunkcinis internetinio pašto plėtinio (MIME) tipą srautui. Jei turite "Office 2007" failų MIME tipų sąrašą, apsilankykite šioje svetainėje:
"Office 2007" failų formato MIME tipai, skirti HTTP turinio transliavimui
Jei taikote tik iš anksto "Office" 2007 klientams, o jūs nenorite reikalauti naudoti "atidaryti XML" tirpale, galite naudoti kitus ne dvejetainius "Office" failų formatus, pvz., HTML, XML ir RTF. Tada galite perduoti šiuos failus klientui naudodami MIME tipą, kad gautame tekste būtų rodomas "Office". Dokumentą galima redaguoti, įrašyti ir netgi grąžinti serveryje naudojant ASP serveryje. Jei reikia daugiau informacijos apie vieną iš šių temų ir pavyzdžių, kurie rodo, kaip juos įgyvendinti, spustelėkite toliau pateiktus straipsnio numerius ir peržiūrėkite straipsnius "Microsoft" žinių bazėje:
198703 Kaip automatizuoti "Excel" iš kliento programos VBScript
278973 ExcelADO parodo, kaip naudoti ADO skaityti ir rašyti duomenis programoje "Excel" darbaknygėse
286023 Kaip naudoti VB ActiveX komponentą, skirtą "Word" automatizavimui iš "Internet Explorer"
Jei jūsų verslui reikia serverio "Office 97", "Office 2000", "Office XP" ir "Office 2003" dvejetainių failų formatų serverio kūrimo, trečiųjų šalių tiekėjai siūlo jums padėsiančius komponentus. "Microsoft" neteikia jokių tokių komponentų, todėl turėsite patys sukurti sprendimą arba įsigyti vieną iš trečiosios šalies tiekėjo. Galima naudoti daug įvairių trečiųjų šalių produktų. Turite ištirti kiekvieną sprendimą, kad geriausiai atitiktų jūsų įmonės poreikius.
Jei norite sukurti savo sprendimą, kuris redaguoja "Office 97", "Office 2000", "Office XP" ir "Office 2003" dvejetainių failų formatus tiesiogiai, galite gauti failo formato specifikacijas nemokamai pagal "Microsoft" atvirosios specifikacijos pažadą (OSP). Nėra techninio palaikymo, skirto dokumentams arba jūsų sukurtiems produktams, tačiau dokumentai yra prieinami.
Serveriniai sprendimai taip pat gali pageidauti leisti vartotojams nusiųsti failus, tada serveryje atvaizduoti failus peržiūrai žiniatinklyje arba kitose laikmenose. "Microsoft" šiuo metu dirba, kad galėtų siūlyti tokias funkcijas, ir pateikia ankstesnę šios galimybės versiją "Microsoft Excel Services". "Excel Services" yra nauja serverio technologija, įtraukta į "Microsoft Office SharePoint Server" 2007 ir leidžianti įkelti, skaičiuoti ir Rodyti "Excel" darbaknyges "Office SharePoint Server 2007". Daugiau informacijos apie "Excel" tarnybas rasite apsilankę šiose "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėse:
Instrukcija: pasirinktinio taikomosios programos kūrimas naudojant "Excel Web Services"
Verslo taikomųjų programų kūrimo naudojant "Excel Services" ir "Office" XML formatus "Word Automation Services" yra nauja tarnybos taikomoji programa "SharePoint Server 2010". "Word" automatizavimo tarnybos teikia nedialoginį serverio dokumentų konvertavimo į formatus, kuriuos palaiko "Microsoft Word" kliento programa.
"Word" automatizavimo tarnybų apžvalga
"Word" automatizavimo tarnybų pristatymas Turite įvertinti, kurios šiame straipsnyje aprašytos parinktys atitinka jūsų poreikius ir kaip geriausiai panaudoti jūsų sprendimą. Šiame straipsnyje pateikiama informacija nėra garantuojama išspręsti visas problemas visiems klientams. Prieš diegdami sprendimą esate raginami kruopščiai išbandyti savo sprendimą.