Visual Studio Tools for Office (VSTO) - Introdução


Não há como negar que a suíte Office composta por Word, Excel , Access , PowerPoint e Outlook reina quase que absoluta entre os aplicativos de front-end para usuários finais. O Word virou sinônimo para processador de textos, o Excel para planilha eletrônica o PowerPoint para criação de apresentações,e e assim caminha a humanidade...

Aliado a este fato as aplicações Office possuem a linguagem VBA - Visual Basic for Applications que permite aos usuários mais avançados personalizar e automatizar diversas tarefas flexibilizando ainda mais as aplicações Office. (A criação de macros também pode ser usada para personalizar aplicações Office).

Os desenvolvedores de aplicações que usam a plataforma .NET podem também efetuar a integração com as aplicações Office usando a linguagem VBA e os objetos da aplicação Office de origem. Isso sempre foi possível desde a versões mais antigas do Visual Basic e se você consultar a seção VBA do site vai encontrar alguns exemplos de aplicações criadas com o Visual Basic que interagem com aplicativos Office.

Mas onde entra o Visual Studio Tools for Office (VSTO) nessa história ?

Ora,  o VSTO se apresenta como uma ferramenta através da qual você vai poder desenvolver aplicações para o Office usando o Visual Studio e qualquer uma das linguagens que a plataforma suporta; dessa forma você poderá usar a plataforma .NET e a linguagem Visual Basic para criar aplicações Office sem a necessidade de usar o bom e velho VBA.

Com isso você vai poder criar aplicações dos tipos suportados pela plataforma .NET e usando as linguagens VB .NET e C#  e os recursos do Visual Studio como LINQ, WPF, WCF, suporte ao ClickOnce, enfim, todos os recursos da .NET Framework 3.5 com código gerenciado, ou seja o VSTO pretende unir o útil (Visual Studio) ao agradável(a interface Office).

Obs: Naturalmente o desenvolvedor da plataforma .NET e do VSTO vai ter que conhecer o modelo de objetos do Office para desenvolver aplicações para essa plataforma e integrar as características das mesmas a sua solução .NET.

Apenas para você perceber as vantagens em usar o VSTO sobre o VBA veja abaixo uma comparação entre as duas ferramentas:

VBA - Visual Basic for Applications VSTO
Usa o código que é conectado a  um documento específico. Usa o código que é armazenado separadamente do documento (para personalizações em nível de documento), ou em um assembly que é carregado pelo aplicativo (para o nível de aplicativo Adicionar-ins).
Funciona com os modelos de objeto do Office e as APIs do  VBA Funciona com os modelos de objeto do Office e as APIs do  .NET Framework.
Projetado para gravação de macro e uma experiência de desenvolvedor simplificada. Desenvolvido para segurança, manutenção do código mais fácil e a capacidade de usar o ambiente de desenvolvimento integrado completo do Visual Studio (IDE).
Funciona bem para soluções que se beneficiam de uma forte integração com aplicativos do Office (IDE, menus, botões da barra de ferramentas e assim por diante). Funciona bem para soluções que se beneficiam dos recursos completos do Visual Studio e o .NET Framework.

Nem tudo são flores no mundo VSTO : Se você for um desenvolvedor Office terá que adquirir a licença para o VSTO o que implica num custo a mais e o processo de deploy de uma solução VSTO é mais complexo que a feito pelo VBA.

Para desenvolver soluções VSTO , você deve instalar as Ferramentas do Visual Studio para o Office, que é instalado por padrão com várias versões do Visual Studio 2008. ( O VSTO já esta incluído no Visual Studio 2008 Professional )

Atualmente o VSTO esta na versão 3.0, se precisar baixe o pacote neste link:  Microsoft Visual Studio Tools for the Microsoft Office system (version 3.0 Runtime) (x86)

Obs: Além disso existe o pacote de idiomas para o VSTO que você pode baixar aqui: Pacote de idiomas para o Microsoft VSTO v3.0 SP1

Para instruções detalhadas de instalação consulte o link : http://msdn.microsoft.com/en-us/library/ms178739.aspx

Aliado a tudo o que eu já falei acrescente que você também pode estender seu código VBA com o VSTO e o código gerenciado incluindo recursos como WPF, WCF, etc., efetuando a transição e a migração das suas aplicações Office feitas em VBA para VSTO de forma gradual. Ah! e ao efetuar esta integração você poderá depurar a solução alternando os dois ambientes.

Abaixo eu relato as instruções básicas para instalar o VSTO para o Office 2003 e 2007 tiradas do site da Microsoft:

1- Como: Instalar o Visual Studio Tools for Office para desenvolver para o Microsoft Office 2003

Para instalar o VSTO para desenvolvimento de solução do Microsoft Office 2003, instale os componentes do Microsoft Office antes de você instalar o Visual Studio, ou efetue a reparação da instalação se você instalou depois.

Pré-Requisitos:

  • NET framework 2.0 ou superior.
  • Uma versão compatível do Microsoft Office e o Serviço Pack 1 (ou posterior) instalada localmente no computador de desenvolvimento.
  • Os assemblies de interoperabilidade primária para a edição do Microsoft Office que você instalou. Os assemblies de interoperabilidade primários devem ser instalados no cache de assembly global (GAC) para executar e depurar a solução de Ferramentas do Visual Studio para o Office.
    Obs:Se o .NET Framework 2,0 ou posterior está instalado antes de instalar o Microsoft Office, você pode instalar os assemblies de interoperabilidade primários no global Assembly cache escolhendo uma instalação completa do Microsoft Office. Caso contrário, você deve instalar os assemblies de interoperabilidade primários separadamente

Etapas da Instalação:

  • Instalar o Microsoft .NET Framework 2,0 ou posterior
  • Instalar uma versão com suporte do Microsoft Office, incluindo Office 2003 Serviço Pack 1 ou posterior e os assemblies de interoperabilidade primários. (Se você instalar o SP1 do Office, é necessário reparar a instalação. Se você instalar um Serviço pack mais recente, você não precisará reparar a instalação)
  • .Instalar uma versão do Visual Studio que inclui o VSTO. (Se você tem uma versão em inglês do Visual Studio, mas usa as configurações que não sejam o inglês para o Windows, você pode instalar o pacote de idioma para ter as mensagens do VSTO no mesmo idioma.)

fonte: http://msdn.microsoft.com/pt-br/library/cc160742.aspx

2- Como: Instalar o Visual Studio Tools for Office para desenvolver para o Microsoft Office 2007

Para instalar o VSTO para o desenvolvimento de soluções para o  Microsoft Office 2007, você pode instalar os seguintes componentes em qualquer ordem: .NET framework 3.5, uma versão com suporte do Microsoft Office e os assemblies de interoperabilidade primários.

Pré-Requisitos:

  • NET framework 3.5 - O .NET Framework 3.5  é requerido para dar suporte a implantação de ClickOnce e outros recursos no  VSTO 3.0.
  • Uma versão com suporte do Microsoft Office instalado localmente no computador de desenvolvimento.
  • Os assemblies de interoperabilidade primária para a edição do Microsoft Office que você instalou. Os assemblies de interoperabilidade primários devem ser instalados no cache de assembly global (GAC) para executar e depurar a solução de Ferramentas do Visual Studio para o Office. Se o .NET Framework 3.5 ou posterior está instalado antes de instalar o Microsoft Office, você pode instalar os assemblies de interoperabilidade primários em global Assembly cache escolhendo uma instalação completa do Microsoft Office. Caso contrário, você deve instalar os assemblies de interoperabilidade primários separadamente.

Etapas da Instalação:

  • Instalar o Microsoft .NET Framework 3.5 ou posterior.
  • Instalar uma versão do Microsoft Office 2007, incluindo os assemblies de interoperabilidade primários.
  • Instalar uma versão do Visual Studio que inclui o VSTO.Se você tem uma versão em inglês do Visual Studio, mas usa as configurações que não sejam o inglês para o Windows, você pode instalar o pacote de idioma para ter as mensagens do VSTO no mesmo idioma.)

fonte: http://msdn.microsoft.com/pt-br/library/54ds2za4.aspx

3- Como instalar os assemblies de interoperabilidade primários do Office

É necessário instalar os assemblies de interoperabilidade primários do Microsoft Office no global Assembly cache(GAC) e registrá-los antes de poder depurar ou executar uma solução Ferramentas do Visual Studio para o Office. Os assemblies de interoperabilidade permitir código gerenciado interagir com o modelo de objeto de baseado em COM de um aplicativo Microsoft Office.

Você pode instalar o conjunto completo de  de assemblies de interoperabilidade primários em global Assembly cache(GAC) de duas maneiras:

  • Executar um instalação completa do Microsoft Office (2003 ou 2007);
  • Instalar a partir do pacote redistribuível de assemblies de interoperabilidade primários (veja o como fazer o download abaixo);

fonte: http://msdn.microsoft.com/pt-br/library/kh3965hw.aspx

Abaixo os links para download dos assemblies de interoperabilidade primários do Office :

Fazendo um resumo vemos na tabela abaixo as versões requeridas da .NET Framework necessárias para o desenvolvimento para o Office 2003 ou Office 2007:

Microsoft Office .NET Framework Visual Studio Tools for Office runtime
Microsoft Office 2003 .NET Framework 2.0 Visual Studio 2005 Tools for Office Second Edition
2007 Microsoft Office system .NET Framework 3.5 Visual Studio Tools for Office 3.0
  .NET Framework 3.5 SP1 Visual Studio Tools for Office 3.0 SP1
  .NET Framework Client Profile (Visual Studio 2008 Service Pack 1 (SP1)) Visual Studio Tools for Office 3.0 SP1

Desenvolvendo soluções para o Office com o VSTO

Você pode incorporar as características das aplicações Office em suas soluções da plataforma .NET escrevendo código que acessa o modelo de objeto das aplicações Office. O modelo de objetos do Office é um conjunto de classes que expõe as funcionalidades de cada aplicação através de vários métodos e propriedades.

Para usar as características de uma aplicação Microsoft Office a partir de uma solução do  VSTO, você precisa usar o primary interop assembly para a aplicação. O primary interop assembly permite gerenciar o código para interagir com as aplicações Office baseadas no modelo de objeto COM.

O VSTO possui vários tipos de projetos que suportam cenários de negócios diferentes para o Microsoft Office 2003 e o 2007, incluindo os seguintes tipos:

Nem todos aplicativos podem usar cada tipo de projeto. Por exemplo, projetos de personalização de nível de documento estão disponíveis apenas para Microsoft Office Word e o Microsoft Office Excel.

Da mesma forma, alguns recursos estão disponíveis somente para determinados tipos de projetos ou aplicativos. Por exemplo, o painel de ações está disponível apenas em projetos de nível de documento, e extensões da Faixa de Opções estão disponíveis apenas para alguns aplicativos no Office 2007.

Para decidir qual destes tipos de projetos é a melhor escolha para sua solução, você deve considerar se deseja que o seu código rode somente quando um documento específico for aberto, ou se você deseja que o seu código esteja disponível sempre que a aplicação Office estiver rodando.

Os tipos de aplicações que podem ser criadas dependem também de quais aplicações Microsoft Office você tem instalada no seu ambiente de desenvolvimento.

Antes de iniciar você deve decidir qual o melhor tipo de projeto para o seu caso. Assim se a sua aplicação Office precisa rodar cada vez que a aplicação for usada, um projeto do tipo Application-level add-ins é a melhor escolha. Se o seu código estiver fortemente integrado com um único documento, criar um projeto do tipo Document-level customizations parece ser a melhor escolha.

Se você criar um projeto do tipo  Document-level customizations também tem que considerar como ele será usado em um ambiente multiusuário: Todos irão trabalhar no mesmo documento ou cada um terá uma cópia separada do documento que poderá ser personalizado ?  Existem modelos de projetos que são adequados aos dois tipos de situação.

Se você criar um template Word você não vai poder usá-lo como um template global ou anexá-lo a documentos existentes, e,  também não existe um modelo de projeto para um arquivo Excel Add-in (.xla)

A seguir vejamos uma breve descrição sobre cada tipo de modelo de projetos:

O VSTO inclui ferramentas que o ajudam a criar add-ins no Visual Studio. Projetos Add-Ins incluem uma classe gerada automaticamente que representa o add-in. Esta classe fornece propriedades e eventos que você pode usar para acessar o modelo de objetos da aplicação host e executar o código quando o add-in for carregado (load)  e for descarregado (shut-down).

Fazendo o deploy e a manutenção

Uma solução VSTO pode ser distribuída de diferentes maneiras. Projetos do tipo Application-level add-ins e document-level customizations para o Office 2007 podem ser distribuídos usando a tecnologia ClickOnce. Um deployment ClickOnce permite que você crie soluções com autoatualização automáticas que podem ser instaladas e que são executadas com uma interação mínima do usuário.

Tratando a segurança

A segurança para projetos do tipo Application-level add-ins e document-level customizations para Office 2007 esta reforçada por uma série de verificações que o run-time de uma aplicação VSTO efetua quando ele instala e executa a solução. O VSTO verifica se a localização do manifest de distribuição é confiável, se o certificado usado para assinar o manifest é confiável , e se a solução esta em uma lista de inclusão.

Modelos de projetos do VSTO

Os modelos de projetos do VSTO estão disponíveis na janela de diálogo New Project sobre o nó Office, o qual contém dois sub-nós: 2003 e 2007, onde cada um deles contém modelos de projetos disponíveis para o Office 2003 e Office 2007. Você também vai encontrar os mesmos modelos de projetos para o Visual C#.

Estes modelos de projetos que permitem que você inicie a criação de document-level customizations para Word e Excel. Basta clicar duas vezes em qualquer projeto a nível de documento para iniciar o assistente de projeto do VSTO, o qual dá a você a escolha de criar um novo documento ou usar um documento já existente para a sua solução.

Vejamos os principais templates: (para 2003 e 2007)

Word Document  Fornece o código para que você inicie automatizando e capturando eventos a partir do Word.
Word Template  Se comporta de forma idêntica a um documento do Word.
Excel Workbook  Fornece  o código para que você inicie a automatização e a captura de eventos a partir do Excel, dessa forma você pode tomar vantagem das ferramentas de análise dados e de criação de gráficos em suas soluções.
Excel Template  O comportamento é idêntico ao template Excel Workbook, porém o template torna mais fácil aos usuários finais a criação de novas cópias do workbook local do template Excel.

Criando um projeto no VSTO

Para encerrar o artigo vou criar um projeto usando o VSTO do tipo Word Document para o Word 2007.

Abra o Visual Studio 2008 com SP1 (lembre-se que você deve ter o Office 2007 instalado) a partir do menu File selecione New Project;

Na janela New Project expanda o nó Office e selecione o nó 2007 e  a seguir selecione o template World 2007 Document e informe o nome AloMundo_VSTO;

Clique no botão OK e aceite a seleção - Create a new Document;

Clique no botão OK novamente e irá surgir uma janela com uma mensagem avisando que será necessário habilitar o acesso do VSTO ao Office. Por padrão o acesso é desabilitado. Clique em OK;

Após a criação do projeto observe que na janela Solution Explorer temos um documento do Word com o nome de Alo_Mundo.docx. Veja as referências do projeto e observe que temos a classe ThisDocument.vb. E o detalhe : O documento Word está aberto no Visual Studio.

Clique no interior do documento Word e escreva algum texto conforme a figura abaixo. Você tem a liberdade de usar qualquer formatação no texto.

Note que na ToolBox temos os controles que normalmente aparecem em um projeto Windows Application. Observe a aba WordControls com controles para o Word.

Agora a partir da ToolBox arraste um controle Button e na janela de propriedades altere sua propriedade Text para : Alo Mundo VSTO (by Macoratti.net);

Clique duas vezes sobre o Button para ir para janela de código. Vamos usar o evento Click do botão para incluir o código que irá incluir uma imagem no Word em tempo de execução e exibir uma mensagem ao usuário através do comando MessageBox conforme abaixo:

Note que temos dois eventos : ThisDocument_Startup e ThisDocument_ShutDown definidos por padrão que estão relacionados com a inicialização e o fechamento do documento e que podem ser usados na sua aplicação para realizar tarefas relacionadas com esses eventos.

Executando o projeto será aberto o documento AloMundo_VSTO no Word conforme a figura 1.0;

Após clicar no botão Alo Mundo a caixa de mensagem será exibida conforme a figura 2.0;

Figura 1.0 Figura 2.0

Ao clicar em OK a imagem será incluída via código e visualizada conforme a figura abaixo:

Foto do meu cachorro, o pipoca, num passeio em Brasília

E com isso acabamos de criar a nossa primeira aplicação usando o VSTO e recursos do Word.

Bem,  eu acho que vou ficando por aqui pois se eu for querer me aprofundar mais o artigo vai acabar virando um livro tamanha as possibilidades e os recursos do VSTO.

Eu sei é apenas VSTO (VBA) , mas eu gosto...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti