Desenvolvimento - Office

Visual Studio 2005 e VSTO – Visual Studio Tools for Office

O pacote Office sem dúvida é o aplicativo que mais pessoas sabem utilizar no mundo! E porque não ter as minhas aplicações utilizando o Office como interface com o usuário? A principal vantagem é que a facilidade na utilização do sistema com certeza faria do seu usuário uma pessoa mais feliz.

por Alexandre Tarifa



O pacote Office sem dúvida é o aplicativo que mais pessoas sabem utilizar no mundo! E porque não ter as minhas aplicações utilizando o Office como interface com o usuário? A principal vantagem é que a facilidade na utilização do sistema com certeza faria do seu usuário uma pessoa mais feliz.

Podemos criar soluções simples onde utilizamos o Word ou o Excel aumentando muito a produtividade para o desenvolvedor e o usuário consegue utilizar os recursos que ele já conhece para aperfeiçoar o sistema da forma que ele preferir.

Acredito que muitas pessoas perdem muito tempo criando relatórios e mais relatórios com infinitas combinações de agrupamento, totalizadores, etc... Sendo que um simples exportar para o Excel facilitaria muito.

Até mesmo vejo sistemas com Grids ultra avançados tentando ao máximo trazer os recursos do Excel... E por que não usar o Excel?

Claro que não estou querendo que todas as aplicações, ou todas as funcionalidades de um sistema devam ficar no Office, mas sem dúvida em diversos casos é uma boa dica.

O VSTO (Visual Studio Tools for Office) trás uma facilidade na criação de aplicações utilizando o .Net utilizando como interface o Office... Seria uma evolução do VBA.

Podemos criar as regras tanto em assemblys DLL´s como em Web Services, criando as aplicações inteligentes (Smart Clients).

Na prática

Pré-requisitos:

  • Visual Studio 2005 (com o VSTO instalado)
  • Office 2003 com Service Pack 2

Abra o Visual Studio 2005 e clique em File > New Project.

Configure a criação do projeto conforme a imagem acima e clique em OK.

Um nova janela é aberta onde vamos configurar o nome do documento ou utilizar um já existente, vamos criar um novo chamado Planilha e clique em OK.

O Visual Studio cria o projeto e da mesma maneira que trabalhamos no Asp.Net ou no Windows Forms, a planilha é aberta para adicionarmos controles dentro da planilha... cuidado: você não está delirando, a planilha Excel está dentro do Visual Studio.

Vamos neste exemplo adicionar uma listagem de produtos na planilha. A configuração do Data Source funciona da mesma maneira que no Windows Forms, abra a janela de Data Source (Shift + Alt + D), e na janela clique em Add New Data Source.

Selecione Database e clique em Next. Na próxima janela selecione o caminho do banco de dados (Neste exemplo vamos selecionar o banco Access NortWind).

Na próxima opção selecionamos o nome que será dado a chave Connection String no App.config, clique em Next. E a última estapa selecionamos as tabelas envolvidas no exemplo: Categories e Products e clique em Finish.

Com o DataSource configurado, vamos criar a lista de produtos, é uma tarefa muito simples. Na janela de DataSources, selecione com o mouse Products e arraste para a planilha na primeira célula da planilha.

Execute a aplicação (F5) e a planilha é aberta com a listagem.

Vamos então adicionar um botão na planilha e neste botão abriremos um formulário com uma lista de categorias, e de acordo com a categoria selecionada, será filtrado os valores da planilha, ou seja, interagimos um Windows Form com uma planilha Excel.

Na Toolbar arraste um botão na planilha, conforme abaixo:

No Solution Explorer clique com o botão direito do mouse sobre o projeto, Add> New Item e selecione conforme abaixo e clique em Add, assim teremos o formulário criado.

Selecione na ToolBox um ListBox e arraste para o formulário. Selecione a Smart Tag e habilite use Data Bound Items.

Selecione em DataSource a tabela de Categories, conforme abaixo:

Em Display Member - CategoryName e Value Member - CategoryID. Com isso definimos que o campo a ser exibido ao usuário será a descrição, e o valor usado como chave será o ID.

Dê um duplo clique sobre o ListBox e será exibido o código fonte da aplicação. Antes de iniciar a programação do evento vamos criar uma propriedade pública para a passagem do valor selecionado para a planilha.

Private _id As Integer
    Public Property Id() As Integer
        Get
            Return _id
        End Get
        Set(ByVal value As Integer)
            _id = value
        End Set
    End Property

Agora no evento SelectedIndexChanged adicione o código para atribuir o valor:

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles ListBox1.SelectedIndexChanged

        Me.Id = ListBox1.SelectedValue
        Me.Close()

End Sub

Para finalizar basta o código no botão que adicionamos na planilha. Abra a planilha e dê um duplo clique no botão para codificarmos o evento click. Adicione o seguinte código:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim frm As New Categoria
        frm.ShowDialog()

        ProductsBindingSource.Filter = "CategoryID = " & frm.Id

End Sub

Veja que recuperamos o valor do ID selecionado, e passamos na propriedade Filter do controles BindingSource que é criado quando utilizamos os recursos de DataSource. Execute a aplicações, clique no botão e selecione uma categoria. Note que os produtos são filtrados.

Conclusão: O .Net nos oferece muitas possibilidades de soluções... criar aplicações fáceis para o usuário faz com que o tempo de treinamento seja reduzido e a aplicação fique muito mais intuitiva. O Produto VSTO é muito grande, este artigo foi apenas um exemplo simplista desta tecnologia. O site MSDN (www.msdn.com.br) trás muito material sobre este assunto.

Alexandre Tarifa

Alexandre Tarifa - Ministra palestras e treinamentos, MVP (Most Valuable Professional), MCAD (Microsoft Certified Application Developer) e MCT (Microsoft Certified Trainer). Bacharel pela UMESP e pós-graduando pela Universidade Federal de São Carlos em Ciência da Computação. Analista de Sistemas e Líder do grupo de usuários Codificando.net São Paulo (sp.codificando.net). Escreve artigos para a revista MSDN Magazine e para os sites Linha de Código, MSDN Brasil e Enterpriseguys.
Visite o blog do autor: http://weblogs.pontonetpt.com/alexandretarifa/.