Visual Studio Tools for Office

Ikke helt Windows Vista relevant, men ytterst Office 2007 relevant. For de som ikke vet det er VSTO en pakke med verktøy for å utvikle add-ins og lignende til Office i Visual Studio. Det følger med maler og eksempler og alt man trenger.

https://msdn2.microsoft.com/en-us/office/aa905533.aspx

Og VSTO 2005 SE er ute, klar for å lage add-ins til det helt nye menysystemet til office.

Det hele har blitt mye lettere da menysystemet (Ribbon) i seg selv er beskrevet i XML. Add-in'en du lager må derfor ha en spesiell metode som f.eks Word kaller for å få denne XML koden. Word parser så XML'en og legger opp dine tillegg i menysystemet. I XML'en beskriver du hva slags type knapp eller menyvalg du vil ha, størrelse og eventuell grafikk. Du skriver også inn hvilken metode i add-in'en din som skal kalles når knappen e.l. aktiveres av brukeren.

Selv lagde jeg en kodesnutt som henter XML'en fra fil når Word trenger den, default i VSTO er at denne XML'en er en integrert ressurs i prosjektet, men det er ingen grunn til å ikke skille ut denne. Da kan du faktisk endre menysystemet uten å endre koden, du endrer kun en XML fil.

Jeg tok det et hakk videre og lagde også en XML fil som beskrev hva som skulle skje når de ulike knappene ble trykket på. Metoden min som ble kalt når en knapp ble trykket på leste i denne fila hva som skulle skje. Altså en form for script og resultatet ble en ny meny i word der jeg kunne editere utsende og "actions" i to XML filer, uten å røre selve koden, som i seg selv ble minimal.

 

XML'en

<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">
<ribbon>
<tabs>
<tab id="MyStuff" label="My Stuff">
<group id="Online" label="Online">
<button id="mysiteButton" size="large" label="My Site" screentip="Launch mysite" onAction="OnClick" imageMso="WebInsertHyperlink" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Her er det OnClick metoden i min Add-in som blir kalt. Alle knapper bruker den og den har lest inn en XML fil som beskriver hva som skal utføres for hver enkelt knapp. Det er ID som brukes som fellesnevner i de to ulike XML filene mine.

.Net

Hele add-in'en kan skrives i .Net og kan gjennom egne .Net biblioteker lett interagere med Office pakka, sette inn tekst, formatere, hente data, åpne/lagre dokumenter osv.