Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Kopsavilkums

Šajā rakstā sniegtas atbildes bieži uzdotiem jautājumiem par Microsoft Office automatizēšanu Visual C++.

Papildinformācija

Satura rādītājs

  1. Kas ir automatizācijas?

  2. Esmu jauna automatizācijas, kur atrast labu resursu papildinformāciju?

  3. Ir dažādi var izmantot automatizāciju?

  4. Kas ir COM?

  5. Kā pievienot Office lietojumprogramma darbojas gadījums

  6. Cik nodot izvēles parametrus?

  7. Kā lomu pakļauti Office lietojumprogrammu notikumu?

  8. Manu automatizācijas kodu darbība ir lēna. Kā var paātrināt lietas?

  9. Ko nozīmē šie lielu kļūdu vērtības kā-2147352573 vai 0x80030002,

  10. Kas ir tipu bibliotēkas?

  11. Manu automatizācijas kodu darbojas ar Microsoft Excel 95, bet neizdodas programmā Microsoft Excel 97. kāpēc?

  12. Kāpēc netiek programmu es esmu automatizēšana paliek atmiņā pēc mana programma ir beigusi darbu?

  13. Es zinu, es vēlos to kā Microsoft Office programmu lietotājs, bet kā to var izdarīt programmiski automatizācijas?

  14. Varat automatizēt programmu iegultu Microsoft Office lietojumprogrammas

  15. Kā piekļūt mans dokumenta rekvizīti programmā Microsoft Office document?

Jautājumi un atbildes

  1. Kas ir automatizācijas? Automatizācijas (iepriekš OLE automatizāciju) ir tehnoloģija, kas ļauj izmantot esošo programmu funkcionalitāte un iekļaut savas lietojumprogrammas. Piemēram, varat izmantot Microsoft Word pareizrakstības un gramatikas pārbaudes uz programmu Microsoft Word redzams lietotājiem bez iespējas. Var arī izmantot visas Microsoft Excel diagrammu, drukāšana un datu analīzes rīku. Šī tehnoloģija var ievērojami vienkāršotu un paātrinātu jūsu izstrādi.

  2. Esmu jauna automatizācijas, kur atrast labu resursu papildinformāciju? Nodaļa 24 David Kruglinski "iekšpusē Visual C++" (ISBN:1-57231-565 - 2) iekārtas vispārīga informācija, kā arī dažas lielas piemēri. Turklāt Microsoft zināšanu bāzē ir labs informācijas avots. Šajā rakstā ir labs sākums un precīzāku atsauces varat atrast Microsoft zināšanu bāzes rakstu:

    atrast resursus mācību OLE automatizācijuJa vēlaties uzzināt, piemēram, lūdzu, skatiet Microsoft zināšanu bāzes rakstu:

    HOWTO izmantot MFC Excel automatizē un izveidot/formātu jaunā darbgrāmatā

  3. Ir dažādi var izmantot automatizāciju? Trīs pamata veidos var izmantot automatizāciju: MFC, #import un C/C++:

    • MFC, izmantojot Visual C++ ClassWizard ģenerēt "palaidējs klases" no Microsoft Office tipu bibliotēkas. Šīs kategorijas, kā arī citām MFC klasēm, piemēram, COleVariant, COleSafeArray, COleException, vienkāršotu automatizācijas uzdevumi. Šī metode parasti ir ieteicama salīdzinājumā ar citiem un lielākā daļa Microsoft zināšanu bāzē piemēru izmantot MFC.

    • #import, kļuvis pieejams ar Visual C++ 5.0, jaunu direktīvu izveido VC + + "viedās rādītāji" norādīto tipu bibliotēkas. Tas ir spēcīgs, bet parasti nav ieteicama dēļ atskaites — uzskaites problēmas, kas parasti rodas, lietojot Microsoft Office lietojumprogrammām.

    • C/C++ automatizācija ir daudz grūtāka, bet dažreiz nepieciešams, lai izvairītos no papildu atbalsts ar MFC vai #import problēmas. Būtībā strādāt ar šādu API kā CoCreateInstance() un INosūtīt un IUnknown interfeisi COM.

    Ir svarīgi atcerēties, ka ir dažas nelielas atšķirības no salīdzinājumā ar vienkāršā C, jo COM izstrādāts saistībā ar klasi C++ C++ automatizācijas. Lai iegūtu papildinformāciju, skatiet šajā Microsoft zināšanu bāzes rakstā C piemēram:

    HOWTO: izmantot OLE automatizāciju C lietojumprogrammā

  4. Kas ir COM? Automatizācija ir balstīts uz Component Object Model (COM). COM ir standarta programmatūras arhitektūras pamatā interfeisus un paredzēts kods sadalīts autonomā objekti. Uzskatīt to paplašinājumu objekta vērsta programmēšana (OOP) modelim, bet jūsu atsevišķas lietojumprogrammas. Katra objekta rada interfeisu kopa, un visas saziņas objektam inicializācija, paziņojumi un datu pārsūtīšanu, piemēram, notiek ar tā. COM ir arī nodrošina dinamisko saišu bibliotēkas (DLL) instalēšanas operētājsistēmā pakalpojumu kopa. Automatizācijas izmanto daudzi no šiem pakalpojumiem. Viens piemērs ir "Marshalling" pakalpojums, kas klienta lietojumprogramma izsauc dalībnieku funkcijas servera lietojumprogrammu interfeisu pakotnēm, un pēc tam nodod tos ar to argumentiem, lai servera lietojumprogramma. Tas rada priekšstatu, servera interfeisiem pakļauti klienta atmiņas apjomu, kas nav gadījumā, ja klients ir .exe darbojas savas procesa vietas. Sakārtošanas arī tiek atjaunota atgrieztās vērtības no servera metodes robežās procesu un droši rokas klienta izsaukums. Ir svarīgi sniegtos dažādi COM bibliotēkas automatizācijas daudzus citus pakalpojumus. Informācija par šiem avotiem ir "Iekšā Ole - Second Edition", Kraig Brockschmidt ISBN 1-55615-843-2 "Pogu COM", Dale Rogerson - ISBN 1-57231-349-8, un "Automatizācijas programmētāju atsauci" ISBN 1-57231-584-9.

  5. Kā pievienot Office lietojumprogramma darbojas gadījums Izmantojiet GetActiveObject() API. Automatizācijas serveri reģistrē sevi ROT (palaist objektu tabulā), izmantojot RegisterActiveObject() API. Automatizācijas klienti var iegūt instancē darbojas ar kodu piemēram:

          // Translate server ProgID into a CLSID. ClsidFromProgID      // gets this information from the registry.      CLSID clsid;      CLSIDFromProgID(L"Excel.Application", &clsid);        // Get an interface to the running instance, if any..      IUnknown *pUnk;      HRESULT hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);      ASSERT(!FAILED(hr));      // Get IDispatch interface for Automation...      IDispatch *pDisp;      hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);      ASSERT(!FAILED(hr));      // Release the no-longer-needed IUnknown...      pUnk->Release();

    Piezīme: ja darbojas vairākas instances jāpievieno Office lietojumprogrammas, var tikai pievienot Pirmkārt, kas tika palaists, izmantojot GetActiveObject() API. Teorētiski jūs varat atkārtot ROT par katru atsevišķu gadījumu, bet Office lietojumprogrammas nav reģistrētas, ja citu jau ir gredzenpuves tā pati pavārdu vienmēr ir tas pats (tā nevarēja atšķirt anyway). Tas nozīmē, ka nevar pievienot visos gadījumos, izņemot vienu. Tomēr Office lietojumprogrammas reģistrēt dokumentus ROT, jo varat veiksmīgi piesaistīt citos gadījumos, atkārtojot ROT meklējat noteiktu dokumentu pievienošanu, tad no tā kļūst programmas objektu. Šajā Microsoft zināšanu bāzes rakstā atkārtojot PUVI un meklē dokumenta nosaukumā ir kods:

    HOWTO: Saņemiet OCX INosūtīt Excel vai Word dokumentuJums nav nepieciešams izdarīt programmas PowerPoint, jo tas ir viena instance pieteikumu; var būt tikai viens gadījumu tas darbojas.

  6. Cik nodot izvēles parametrus? Dažas metodes ir "izvēles" parametrus. Visual Basic, varat nejauši izlaist tos izsaucot metodi. Tomēr ar Visual C++ zvanot jums pieņemt īpašu variants, kuru .vt lauks ir VT_ERROR, un .scode lauks ir DISP_E_PARAMNOTFOUND. tas ir:

          // VARIANT used in place of optional-parameters.      VARIANT varOpt;      varOpt.vt = VT_ERROR;      varOpt.scode = DISP_E_PARAMNOTFOUND;

    Tas tiešām to dara Visual Basic uzlabotai.

  7. Kā lomu pakļauti Office lietojumprogrammu notikumu? Būtībā vēlaties panākt ("satekne") notikumu interfeiss un iestatīšanas konsultāciju saistībā ar programmu ("avots"). Šajā rakstā sniegta detalizēti piemēri Microsoft Word:

    HOWTO: Catch Microsoft Word97 lietojumprogrammu notikumu, izmantojot VC + +Parasti setup konsultāciju savienojumu, jums servera IConnectionPointContainer un FindConnectionPoint() ar notikumu interfeisa IID zvanu. Tas dod IConnectionPoint interfeisu un viss, kas vēl ir jāsazinās ar gadījuma notikuma interfeisa Advise(). Serveris pēc tam atzvanīs šajā saskarnē, šie notikumi.

  8. Manu automatizācijas kodu darbība ir lēna. Kā var paātrināt lietas? Kopējo ātrumu automatizācijas problēmas cēlonis ir atkārtoti lasīšanas un rakstīšanas datus. Šis ir tipisks Excel automatizācijas klientiem. Tomēr lielākā daļa cilvēku nav apzinās, ka šie dati parasti rakstīts vai lasīt visus uzreiz, izmantojot SAFEARRAY. Skatiet plašāku informāciju un informatīvs piemērus šos Microsoft zināšanu bāzes rakstus:

    HOWTO: izmantot MFC Excel automatizē un aizpildiet diapazonam masīvs

    HOWTO: izmantot MFC Excel automatizē un iegūstiet masīva diapazons

    HOWTO: izmantot MFC Excel automatizē un izveidot/formātu jaunā darbgrāmatāTurklāt ir svarīgi konstatēt, izmantojot starpliktuvi dažreiz var uzlabot veiktspēju. Piemēram, jums var datus kopētu starpliktuvē un pēc tam izmantojiet automatizācijas paziņot serverim, lai ielīmētu. Vai otrādi; norādiet serveri kopēt starpliktuvē un ielīmēt programmu.

  9. Kādas šīs lielu kļūdu vērtības, piemēram,-2147352573 vai 0x80030002 nozīmē? Šīs vērtības sauc par HRESULTs un ir norādīti atbilstošajā. Cipari ir tik liela, jo pirmo bitu apzīmē kļūdu rezultāts ir vai nav. Varat izmantot Visual C++ tulkot šos numurus jēgpilns apraksti komplektācijā ErrLook.Exe utilītu. Ja vēlaties iegūt programmiski kļūdas aprakstu, varat izmantot FormatMessage() API. FormatMessage() izmantošanu skatiet šādos Microsoft zināšanu bāzes rakstos plašāku informāciju un piemēri:

    INFO: tulkošanas automatizācijas kļūdas par VB/VBA

    PARAUGA : Decode32 un Decode16 OLE kļūdas kods dekodētājs rīkiPiezīme: ja jūs izmantojat Visual C++ 6.0 un ir mainīgais satur atkļūdošanas logā Noskatieties šo vērtību, pievienot ", hr" (bez pēdiņām) tai ir Visual C++ tulkot automātiski!

  10. Kas ir tipu bibliotēkas? Tipu bibliotēka ir līdzīga C/C++ galvenes failu. Tajā interfeisus, metodes un rekvizīti, servera publicēšanas. Varat skatīt tipu bibliotēkas ar OLE/COM objekts skatītāju (Oleview.exe) Visual C++ komplektācijā. Šeit ir saraksts ar tipu bibliotēkas failu nosaukumi Microsoft Office 95 97 un 2000: Office Application | Type library ------------------------+---------------- Word 95 and prior | wb70en32.tlb Excel 95 and prior | xl5en32.olb Powerpoint 95 and prior | Powerpoint.tlb Access 95 and prior | msaccess.tlb Binder 95 | binder.tlb Schedule+ | sp7en32.olb Project | pj4en32.olb Team Manager | mstmgr1.olb Word 97 | msword8.olb Excel 97 | excel8.olb Powerpoint 97 | msppt8.olb Access 97 | msacc8.olb Binder 97 | msbdr8.olb Graph 97 | graph8.olb Outlook 97 | msoutl8.olb Outlook 98 | msoutl85.olb Word 2000 | msword9.olb Excel 2000 | excel9.olb Powerpoint 2000 | msppt9.olb Access 2000 | msacc9.olb Outlook 2000 | msoutl9.olb Word 2002 | msword.olb Excel 2002 | excel.exe Powerpoint 2002 | msppt.olb Access 2002 | msacc.olb Outlook 2002 | msoutl.olb

  1. Excel 95, bet neizdodas ar Excel 97 strādāja mana automatizācijas kodu. kas notiek? Excel objektu modelis veiktas būtiskas izmaiņas versijas 95 līdz 97. Excel 95 vienā INosūtīt ieviešanu īstenot visas metodes un rekvizītus. Tas nozīmē, bieži vien varat nosaukt paredzēta objekta X no Y objekta metodes. Tas nav labs dizains, lai Office 97 katram objektam ir savs atsevišķa INosūtīt ieviešanas. Tas nozīmē, ka ja pieprasāt metodi vai rekvizītu no atsevišķa objekta Y X objektu, tiek parādīts kļūdas ziņojums 0x80020003,-2147352573, "dalībnieks nav atrasts." Lai novērstu šo kļūdu, jums ir jāpārliecinās, pamatā ir zvanīšana no INosūtīt interfeiss ir semantiski piemērots. Skatiet plašāku informāciju šajos Microsoft zināšanu bāzes rakstos:

    HOWTO: problēmu novēršana "Loceklis nav atrasts" 0x80020003 kļūdas

  2. Es esmu automatizēšana lietojumprogrammas paliek atmiņā pēc mana programma ir beigusi darbu. kas notiek? Visticamāk, tas ir tāpēc, ka esat aizmirsis nodot iegūto interfeisu un jums vajadzēs to izsekot. Šeit ir daži vispārīgi ieteikumi un lietas, kas meklē:

    • Ja izmantojat #import, visticamāk, varētu jādarbojas vienā atsauču uzskaiti kļūdām, kas saistītas ar to. Bieži reizes kļūdas var strādāja saistībā ar, bet parasti tas ieteicams izmantot kādu no citām metodēm automatizāciju. #import nedarbojas labi ar Office lietojumprogrammām, jo tās tipu bibliotēkas un izmantošana ir diezgan sarežģīta. Arī šādas atsauces uzskaites problēmas ir grūti izsekot, jo daudz saskarnes līmenī COM zvanu uzlabotai, izmantojot #import.

    • Pārbaudiet, ja netiek izsaukts visas metodes, piemēram, Open vai izveidot jaunu skatīšanu INosūtīt * (LPDISPATCH) un ignorējot atgriezto vērtību. Ja, pēc tam ir pamest šo atpakaļ interfeisu un būs nepieciešams mainīt kodu, lai jūs atbrīvot, ja vairs nav nepieciešama.

    • Pakāpeniski komentārs no sadaļas kodu, līdz problēma pazūd un pēc tam pievienojiet to atpakaļ saprātīgi izsekot, kur sākas problēmas.

    • Piezīme Dažās lietojumprogrammās paliks darbojas, ja lietotājs ir "pieskarties" programmu. Ja tā notiek, kamēr esat automatizēšana, tad lietojumprogrammu droši vien paliks darboties pēc tam. Office lietojumprogrammās, jūs varat lasīšanai/rakstīšanai un mainītu programmas objektu ir "UserControl" rekvizītu.

    • Turklāt dažas lietojumprogrammas izlemt apturēt darbību, ja pietiekami lietotāja interfeiss "darbība" ir radusies. Ja jums ir plāno iziet no lietojumprogrammas, izsaukt metodi Quit() programmas objektu. Programma Word to izslēgšanas neatkarīgi no tā atsauču skaits, beidziet darbu ar nosaukumu. Tas nav COM paredzamā rīcība. Excel, tiek pareizi tikai slēpt sevi tomēr paliek darboties, līdz tiek izlaista neveikta visos interfeisos. Parasti ir izlaistas neveikta visās atsaucēs un Quit() zvanīt tikai, ja vēlaties, lai pārtrauktu lietojumprogrammas.

  3. Es zinu, es vēlos to kā kādu Office programmu, bet kā es varu darīt programmiski līdz automatizācijas? Ko jūs interesē ir objekti, metodes un rekvizīti jālieto. Labākais veids, kā naviģēt objektu modeļi Word, Excel un Powerpoint, pamatojoties uz to, ko vēlaties darīt kā lietotājs, kā tiek izmantots makro ierakstītājs. Vienkārši izvēlnē Rīki izvēlieties Macro\ ierakstīt jaunu makro, izpildīt uzdevumu jūs interesē un pēc tam izvēlieties Macro\ "Stop Recording". Kad esat pabeidzis ierakstu, izvēlnē Rīki izvēlieties Macro\Macros, atlasiet ierakstīto makro, un pēc tam noklikšķiniet uz Rediģēt. Tiksit novirzīts ģenerēto VBA kodu, kas tiks uzdevumu tiek reģistrēts. Ņemiet vērā ierakstīto makro nebūs vislabāk kods vairumā gadījumu, taču tas ir ļoti labi ātri piemēru.

  4. Varat automatizēt programmu iegulto Office lietojumprogrammu Noteikti. Novērst problēmu kļūst INosūtīt rādītājs: tas ir iekļauts Visual C++ tehniskie piezīmes 39 (TN039). Skatiet šajā Microsoft zināšanu bāzes rakstā detalizēti piemēram:

    HOWTO: iegult un automatizēt programmu Microsoft Excel darblapa ar MFC

  5. Kā piekļūt mans dokumenta rekvizīti Office dokumentu? Dokumenta rekvizīti ir pieejami, izmantojot automatizācijas vai tieši IPropertyStorage. Katras metodes parāda šādus Microsoft zināšanu bāzes rakstus:

    HOWTO: automatizācijas izmanto, lai izgūtu iebūvēto dokumenta rekvizīti

    HOWTO: lasīt tieši ar VC + + salikta dokumenta rekvizīti

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×