Delen via


Aanpassingen op documentniveau van het programma

Wanneer u Microsoft Office Word of Microsoft Office Excel uitbreidt met behulp van een aanpassing op documentniveau, kunt u de volgende taken uitvoeren:

  • Automatiseer de toepassing met behulp van het objectmodel.

  • Besturingselementen toevoegen aan het oppervlak van het document.

  • Roep VBA-code (Visual Basic for Applications) aan in het document vanuit de aanpassingsassembly.

  • Roep code aan in de aanpassingsassembly van VBA.

  • Beheer bepaalde aspecten van het document terwijl het zich op een server bevindt waarop Microsoft Office niet is geïnstalleerd.

  • Pas de gebruikersinterface (UI) van de toepassing aan.

    Van toepassing op: De informatie in dit onderwerp is van toepassing op projecten op documentniveau voor Excel en Word. Zie Functies die beschikbaar zijn voor de Office-toepassing en het projecttype voor meer informatie.

    Sommige aspecten van het schrijven van code in projecten op documentniveau verschillen van andere typen projecten in Visual Studio. Veel van deze verschillen worden veroorzaakt door de manier waarop de Office-objectmodellen worden blootgesteld aan beheerde code. Zie Code schrijven in Office-oplossingen voor meer informatie.

    Voor algemene informatie over aanpassingen op documentniveau en andere typen oplossingen die u kunt maken met behulp van de Office-ontwikkelhulpprogramma's in Visual Studio, raadpleegt u het overzicht van de ontwikkeling van Office-oplossingen (VSTO).

De gegenereerde klassen gebruiken in projecten op documentniveau

Wanneer u een project op documentniveau maakt, genereert Visual Studio automatisch een klasse in het project die u kunt gebruiken om te beginnen met het schrijven van uw code. Visual Studio genereert verschillende klassen voor Word en Excel:

  • In projecten op documentniveau voor Word wordt de klasse standaard aangeroepen ThisDocument .

  • Projecten op documentniveau voor Excel hebben meerdere gegenereerde klassen: één voor de werkmap zelf en één voor elk werkblad. Deze klassen hebben standaard de volgende namen:

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

    De gegenereerde klasse bevat gebeurtenis-handlers die worden aangeroepen wanneer het document wordt geopend of gesloten. Als u code wilt uitvoeren wanneer het document wordt geopend, voegt u code toe aan de Startup gebeurtenis-handler. Als u code wilt uitvoeren vlak voordat het document wordt gesloten, voegt u code toe aan de Shutdown gebeurtenis-handler. Zie Gebeurtenissen in Office-projecten voor meer informatie.

Inzicht in het ontwerp van de gegenereerde klassen

In projecten die zijn gericht op .NET Framework 4 of .NET Framework 4.5, zijn de hostitemtypen in de Visual Studio Tools for Office Runtime interfaces, zodat de gegenereerde klassen hun implementatie ervan niet kunnen afleiden. In plaats daarvan leiden de gegenereerde klassen de meeste van hun leden af van de volgende basisklassen:

  • ThisDocument: afgeleid van DocumentBase.

  • ThisWorkbook: afgeleid van WorkbookBase.

  • Sheet n: afgeleid van WorksheetBase.

    Met deze basisklassen worden alle aanroepen naar hun leden omgeleid naar interne implementaties van de bijbehorende hostiteminterfaces in de Visual Studio Tools voor Office Runtime. Als u bijvoorbeeld de Protect methode van de ThisDocument klasse aanroept, wordt deze aanroep door de DocumentBase klasse omgeleid naar de interne implementatie van de Document interface in visual Studio Tools voor Office Runtime.

Het objectmodel van de hosttoepassing openen

Als u toegang wilt krijgen tot het objectmodel van de hosttoepassing, gebruikt u leden van de gegenereerde klasse in uw project. Elk van deze klassen komt overeen met een object in het objectmodel van Excel of Word, en ze bevatten de meeste van dezelfde eigenschappen, methoden en gebeurtenissen. De klasse in een project op documentniveau voor Word biedt bijvoorbeeld ThisDocument de meeste leden van het Document object in het Word-objectmodel.

In het volgende codevoorbeeld ziet u hoe u het Word-objectmodel gebruikt om het document op te slaan dat deel uitmaakt van een aanpassing op documentniveau voor Word. Dit voorbeeld is bedoeld om te worden uitgevoerd vanuit de ThisDocument klasse.

this.Save();

Als u hetzelfde wilt doen van buiten de ThisDocument klasse, gebruikt u het Globals object om toegang te krijgen tot de ThisDocument klasse. U kunt deze code bijvoorbeeld toevoegen aan een codebestand voor het actievenster als u een knop Opslaan wilt opnemen in de gebruikersinterface van het deelvenster Acties.

Globals.ThisDocument.Save();

Omdat de klasse de ThisDocument meeste leden van het Document hostitem verkrijgt, is de Save methode die in deze code wordt aangeroepen, echt de Save methode van het Document hostitem. Deze methode komt overeen met de Save methode van het Document object in het Word-objectmodel.

Zie het overzicht van het Word-objectmodel en het excel-objectmodel voor meer informatie over het gebruik van de objectmodellen van Word en Excel.

Zie Globals voor meer informatie over het object.

Besturingselementen toevoegen aan documenten

Als u de gebruikersinterface van het document wilt aanpassen, kunt u Besturingselementen voor Windows Forms of hostbesturingselementen toevoegen aan het documentoppervlak. Door verschillende sets besturingselementen te combineren en code te schrijven, kunt u de besturingselementen binden aan gegevens, informatie van de gebruiker verzamelen en reageren op gebruikersacties.

Hostbesturingselementen zijn klassen waarmee sommige objecten in het Word- en Excel-objectmodel worden uitgebreid. Het ListObject host control biedt bijvoorbeeld alle functionaliteit van de ListObject in Excel. Het ListObject hostbeheer heeft echter ook aanvullende mogelijkheden voor gebeurtenissen en gegevensbindingen.

Zie Overzicht hostitems en hostbesturingselementen en Besturingselementen voor Windows-formulieren in Office-documenten voor meer informatie.

VBA en aanpassingen op documentniveau combineren

U kunt VBA-code gebruiken in een document dat deel uitmaakt van een aanpassing op documentniveau. U kunt VBA-code aanroepen in het document vanuit de aanpassingsassembly en u kunt uw project ook configureren om VBA-code in het document in te schakelen voor het aanroepen van code in de aanpassingsassembly.

Zie VBA en aanpassingen op documentniveau combineren voor meer informatie.

Documenten op een server beheren

U kunt verschillende aspecten van aanpassingen op documentniveau beheren op een server waarop Microsoft Office Word of Microsoft Office Excel niet is geïnstalleerd. U kunt bijvoorbeeld gegevens openen en wijzigen in de gegevenscache van het document. U kunt ook de aanpassingsassembly beheren die aan het document is gekoppeld. U kunt de assembly bijvoorbeeld programmatisch verwijderen uit het document, zodat het document de code niet meer uitvoert of u kunt een assembly programmatisch aan een document koppelen.

Zie Documenten op een server beheren met behulp van de ServerDocument-klasse voor meer informatie.

De gebruikersinterface van Microsoft Office-toepassingen aanpassen

U kunt de gebruikersinterface van Word en Excel op de volgende manieren aanpassen met behulp van een aanpassing op documentniveau:

Uitgebreide objecten ophalen uit native Office-objecten in aanpassingen op documentniveau

Veel gebeurtenishandlers voor Office-gebeurtenissen ontvangen een native Office-object dat de werkmap, het werkblad of het document vertegenwoordigt dat de gebeurtenis heeft opgeroepen. In sommige gevallen wilt u mogelijk alleen code uitvoeren als de werkmap of het document in de aanpassing op documentniveau de gebeurtenis heeft gegenereerd. In een aanpassing op documentniveau voor Excel wilt u bijvoorbeeld code uitvoeren wanneer de gebruiker een van de werkbladen in de aangepaste werkmap activeert, maar niet wanneer de gebruiker een werkblad activeert in een andere werkmap die tegelijkertijd wordt geopend.

Wanneer u een systeemeigen Office-object hebt, kunt u testen of dat object is uitgebreid naar een hostitem of hostbesturingselement in een aanpassing op documentniveau. Hostitems en hostbesturingselementen zijn typen die worden geleverd door de Visual Studio Tools for Office Runtime waarmee functionaliteit wordt toegevoegd aan objecten die systeemeigen bestaan in de Word- of Excel-objectmodellen ( systeemeigen Office-objecten genoemd). Gezamenlijk worden hostitems en hostbesturingselementen ook wel uitgebreide objecten genoemd. Zie Het overzicht van hostitems en hostbesturingselementen voor meer informatie over hostitems en hostbesturingselementen.

De methoden GetVstoObject en HasVstoObject begrijpen

Als u een systeemeigen Office-object wilt testen, gebruikt u de HasVstoObject en GetVstoObject methoden in uw project:

  • Gebruik de HasVstoObject methode als u wilt bepalen of het systeemeigen Office-object een uitgebreid object heeft in uw aanpassing. Deze methode retourneert waar als het systeemeigen Office-object een uitgebreid object heeft, en anders onwaar.

  • Gebruik de GetVstoObject methode als u het uitgebreide object voor een systeemeigen Office-object wilt ophalen. Met deze methode wordt een ListObject, Workbookof WorksheetDocument object geretourneerd als het opgegeven systeemeigen Office-object er een heeft. GetVstoObject Anders wordt null geretourneerd. De methode retourneert bijvoorbeeld GetVstoObject een Document als het opgegeven Document-object het onderliggende object is voor het document in uw Word-documentproject.

    In projecten op documentniveau kunt u de GetVstoObject methode niet gebruiken om een nieuw Workbook, Worksheetof Document hostitem te maken tijdens runtime. U kunt deze methode alleen gebruiken voor toegang tot bestaande hostitems die tijdens het ontwerptijd in uw project worden gegenereerd. Als u nieuwe hostitems tijdens runtime wilt maken, moet u een VSTO-invoegtoepassingsproject ontwikkelen. Zie Programmatische beperkingen van hostitems en hostbesturingselementen en Word-documenten en Excel-werkmappen in VSTO-invoegtoepassingen tijdens runtime uitbreiden voor meer informatie.

De methoden GetVstoObject en HasVstoObject gebruiken

Als u de HasVstoObject en GetVstoObject methode wilt aanroepen, gebruikt u de Globals.Factory.GetVstoObject of Globals.Factory.HasVstoObject methode en geeft u het systeemeigen Word- of Excel-object (zoals een Document of Worksheet) door dat u wilt testen.