Přizpůsobení na úrovni dokumentu programu

Když rozšíříte systém Microsoft Office Wordu nebo systém Microsoft Office Excelu pomocí přizpůsobení na úrovni dokumentu, můžete provádět následující úlohy:

  • Automatizujte aplikaci pomocí objektového modelu.

  • Přidejte ovládací prvky na povrch dokumentu.

  • Volání kódu jazyk Visual Basic for Application (VBA) v dokumentu ze sestavení přizpůsobení

  • Volání kódu v sestavení přizpůsobení z jazyka VBA

  • Spravujte určité aspekty dokumentu, když je na serveru, který nemá nainstalované systém Microsoft Office.

  • Přizpůsobte uživatelské rozhraní aplikace.

    Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu pro Excel a Word. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

    Některé aspekty psaní kódu v projektech na úrovni dokumentu se liší od jiných typů projektů v sadě Visual Studio. Mnohé z těchto rozdílů způsobují způsob, jakým jsou objektové modely Office vystavené spravovanému kódu. Další informace najdete v tématu Psaní kódu v řešeních Office.

    Obecné informace o přizpůsobení na úrovni dokumentu a dalších typech řešení, která můžete vytvořit pomocí vývojových nástrojů Office v sadě Visual Studio, najdete v tématu Přehled vývoje řešení pro Office (VSTO).

Použití vygenerovaných tříd v projektech na úrovni dokumentů

Když vytvoříte projekt na úrovni dokumentu, Visual Studio automaticky vygeneruje třídu v projektu, kterou můžete použít k zahájení psaní kódu. Visual Studio generuje různé třídy pro Word a Excel:

  • V projektech na úrovni dokumentu pro Word je třída volána ThisDocument ve výchozím nastavení.

  • Projekty na úrovni dokumentu pro Excel mají více vygenerovaných tříd: jeden pro samotný sešit a jeden pro každý list. Ve výchozím nastavení mají tyto třídy následující názvy:

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

    Vygenerovaná třída obsahuje obslužné rutiny událostí, které jsou volány při otevření nebo zavření dokumentu. Pokud chcete spustit kód při otevření dokumentu, přidejte kód do obslužné rutiny Startup události. Pokud chcete kód spustit těsně před zavřeným dokumentem, přidejte kód do Shutdown obslužné rutiny události. Další informace naleznete v tématu Události v projektech Office.

Principy návrhu vygenerovaných tříd

V projektech, které cílí na rozhraní .NET Framework 4 nebo .NET Framework 4.5, jsou typy položek hostitele v sadě Visual Studio Tools for Office runtime rozhraní, takže generované třídy nemohou odvozovat jejich implementaci. Místo toho generované třídy odvozují většinu svých členů z následujících základních tříd:

  • ThisDocument: je odvozen z DocumentBase.

  • ThisWorkbook: je odvozen z WorkbookBase.

  • Sheetn: odvozuje z WorksheetBase.

    Tyto základní třídy přesměrují všechna volání jejich členů na interní implementace odpovídajících rozhraní položek hostitele v sadě Visual Studio Tools for Office runtime . Pokud například voláte Protect metodu ThisDocument třídy, DocumentBase třída přesměruje toto volání na interní implementaci Document rozhraní v sadě Visual Studio Tools for Office runtime .

Přístup k objektovém modelu hostitelské aplikace

Pokud chcete získat přístup k objektového modelu hostitelské aplikace, použijte členy vygenerované třídy v projektu. Každá z těchto tříd odpovídá objektu v objektovém modelu aplikace Excel nebo Word a obsahují většinu stejných vlastností, metod a událostí. Například ThisDocument třída v projektu na úrovni dokumentu pro Word poskytuje většinu stejných členů jako Document objekt v objektovém modelu Wordu.

Následující příklad kódu ukazuje, jak pomocí objektového modelu Aplikace Word uložit dokument, který je součástí přizpůsobení na úrovni dokumentu pro Word. Tento příklad je určen ke spuštění ze ThisDocument třídy.

this.Save();

Chcete-li provést totéž zvnějšku ThisDocument třídy, použijte Globals objekt pro přístup ThisDocument ke třídě. Tento kód můžete například přidat do souboru kódu podokna akcí, pokud chcete do uživatelského rozhraní podokna akcí zahrnout tlačítko Uložit .

Globals.ThisDocument.Save();

Vzhledem k tomu, že ThisDocument třída získává většinu svých členů z Document položky hostitele, Save metoda, která je volána v tomto kódu je skutečně Save metoda Document hostitelské položky. Tato metoda odpovídá Save metodě objektu Document v objektovém modelu aplikace Word.

Další informace o používání objektových modelů wordových a excelových modelů najdete v přehledu objektového modelu Wordu a přehledu objektového modelu Excelu.

Další informace o objektu Globals naleznete v tématu Globální přístup k objektům v projektech Office.

Přidání ovládacích prvků do dokumentů

Pokud chcete přizpůsobit uživatelské rozhraní dokumentu, můžete na plochu dokumentu přidat model Windows Forms ovládací prvky nebo hostitelské ovládací prvky. Kombinací různých sad ovládacích prvků a psaní kódu můžete svázat ovládací prvky s daty, shromažďovat informace od uživatele a reagovat na akce uživatele.

Hostitelské ovládací prvky jsou třídy, které rozšiřují některé objekty v objektovém modelu Aplikace Word a Excel. Například ListObject ovládací prvek hostitele poskytuje všechny funkce v Excelu ListObject . ListObject Ovládací prvek hostitele má ale také další události a možnosti datové vazby.

Další informace najdete v tématu Přehled položek hostitele a ovládacích prvků hostitelů a ovládacích prvků Windows Forms v dokumentech Office.

Kombinování přizpůsobení na úrovni dokumentu a jazyka VBA

Kód jazyka VBA můžete použít v dokumentu, který je součástí přizpůsobení na úrovni dokumentu. Kód jazyka VBA v dokumentu můžete volat z sestavení přizpůsobení a můžete také nakonfigurovat projekt tak, aby v dokumentu povolil kód jazyka VBA pro volání kódu v sestavení přizpůsobení.

Další informace najdete v tématu Kombinování přizpůsobení jazyka VBA a na úrovni dokumentu.

Správa dokumentů na serveru

Na serveru, který nemá nainstalované systém Microsoft Office Wordu nebo systém Microsoft Office Excelu, můžete spravovat několik různých aspektů přizpůsobení na úrovni dokumentu. Můžete například přistupovat k datům v mezipaměti dat dokumentu a upravovat je. Můžete také spravovat sestavení přizpůsobení přidružené k dokumentu. Sestavení můžete například z dokumentu programově odebrat, aby dokument už nespustí váš kód, nebo můžete k dokumentu programově připojit sestavení.

Další informace naleznete v tématu Správa dokumentů na serveru pomocí Třídy ServerDocument.

Přizpůsobení uživatelského rozhraní aplikací systém Microsoft Office

Uživatelské rozhraní Wordu a Excelu můžete přizpůsobit následujícími způsoby pomocí přizpůsobení na úrovni dokumentu:

Získání rozšířených objektů z nativních objektů Office v přizpůsobení na úrovni dokumentu

Mnoho obslužných rutin událostí pro události Office obdrží nativní objekt Office, který představuje sešit, list nebo dokument, který vyvolal událost. V některých případech můžete chtít spustit nějaký kód jenom v případě, že sešit nebo dokument v přizpůsobení na úrovni dokumentu vyvolal událost. Například v přizpůsobení na úrovni dokumentu pro Excel můžete chtít spustit nějaký kód, když uživatel aktivuje jeden z listů v přizpůsobeném sešitu, ale ne, když uživatel aktivuje list v jiném sešitu, který se stane otevřený ve stejnou dobu.

Pokud máte nativní objekt Office, můžete otestovat, jestli byl tento objekt rozšířen na položku hostitele nebo ovládací prvek hostitele v přizpůsobení na úrovni dokumentu. Hostitelské položky a ovládací prvky hostitele jsou typy poskytované modulem runtime Visual Studio Tools for Office, které přidávají funkce k objektům, které existují nativně v objektových modelech Wordu nebo Excelu (označované jako nativní objekty Office). Souhrnně se položky hostitele a hostitelské ovládací prvky označují také jako rozšířené objekty. Další informace o hostitelských položkách a ovládacích prvcích hostitelů najdete v tématu Přehled položek hostitele a hostitelských ovládacích prvků.

Vysvětlení metod GetVstoObject a HasVstoObject

K otestování nativního objektu Office použijte v projektu tyto HasVstoObject metody GetVstoObject :

  • Tuto metodu HasVstoObject použijte, pokud chcete zjistit, jestli má nativní objekt Office rozšířený objekt ve vašem přizpůsobení. Tato metoda vrátí hodnotu true , pokud má nativní objekt Office rozšířený objekt a jinak false .

  • Tuto metodu GetVstoObject použijte, pokud chcete získat rozšířený objekt pro nativní objekt Office. Tato metoda vrátí ListObjectobjekt , , WorksheetWorkbooknebo Document objekt, pokud zadaný nativní objekt Office má jeden. GetVstoObject V opačném případě vrátí hodnotu null. Metoda například GetVstoObject vrátí Document , pokud je zadaným Document objektem podkladový objekt pro dokument v projektu wordového dokumentu.

    V projektech na úrovni dokumentu nelze metodu GetVstoObject použít k vytvoření nové Workbook, Worksheetnebo Document hostitelské položky za běhu. Tuto metodu můžete použít pouze pro přístup k existujícím hostitelským položkám vygenerovaným v projektu v době návrhu. Pokud chcete vytvářet nové hostitelské položky za běhu, musíte vytvořit projekt doplňku VSTO. Další informace naleznete v tématu Programová omezení hostitelských položek a hostitelských ovládacích prvků a rozšíření wordových dokumentů a excelových sešitů v doplňkech VSTO za běhu.

Použití metod GetVstoObject a HasVstoObject

K volání a GetVstoObject metody použijte metodu HasVstoObject nebo Globals.Factory.HasVstoObject metodu Globals.Factory.GetVstoObject a předejte nativní objekt aplikace Word nebo Excel (například Document neboWorksheet), který chcete otestovat.