Partilhar via


Instruções: Programação do Office no Visual Basic

O Visual Studio oferece funcionalidades no Visual Basic que melhoram a programação do Microsoft Office. As funcionalidades no Visual Basic incluem propriedades implementadas automaticamente, instruções em expressões lambda e inicializadores de coleção. Pode incorporar informações de tipo, o que permite a implementação de assemblagens que interagem com componentes COM sem implementar assemblagens interop primárias (PIAs) no computador do utilizador. Para obter mais informações, veja Instruções: Incorporar Tipos de Assemblagens Geridas.

Estas instruções demonstram estas funcionalidades no contexto da programação do Office, mas muitas destas funcionalidades também são úteis na programação geral. Nas instruções, utiliza uma aplicação de Suplemento do Excel para criar um livro do Excel. Em seguida, vai criar um documento Word que contém uma ligação para o livro. Por fim, verá como ativar e desativar a dependência PIA.

Pré-requisitos

Tem de ter o Microsoft Office Excel e o Microsoft Office Word instalados no seu computador para concluir estas instruções.

Nota

O seu computador pode apresentar nomes ou localizações diferentes para alguns dos elementos da interface de utilizador do Visual Studio nas seguintes instruções. A edição do Visual Studio que tem e as definições que utiliza determinam estes elementos. Para obter mais informações, veja Personalizar o IDE.

Configurar uma aplicação de Suplemento do Excel

  1. Inicie o Visual Studio.

  2. No menu Ficheiro , aponte para Novo e, em seguida, clique em Projeto.

  3. No painel Modelos Instalados , expanda Visual Basic, expanda Office e, em seguida, clique no ano da versão do produto do Office.

  4. No painel Modelos, clique em Suplemento da versão> do Excel<.

  5. Observe a parte superior do painel Modelos para se certificar de que o .NET Framework 4 ou uma versão posterior é apresentado na caixa Framework de Destino.

  6. Escreva um nome para o projeto na caixa Nome , se quiser.

  7. Clique em OK.

  8. O novo projeto é apresentado no Explorador de Soluções.

Adicionar referências

  1. No Explorador de Soluções, clique com o botão direito do rato no nome do projeto e, em seguida, clique em Adicionar Referência. É apresentada a caixa de diálogo Adicionar Referência .

  2. No separador Assemblagens, selecione Microsoft.Office.Interop.Excel, versão <version>.0.0.0 (para obter uma chave para os números da versão do produto do Office, consulte Versões da Microsoft), na lista Nome do Componente e, em seguida, mantenha premida a tecla CTRL e selecione Microsoft.Office.Interop.Word, . version <version>.0.0.0 Se não vir as assemblagens, poderá ter de garantir que estão instaladas e apresentadas (consulte Como: Instalar Assemblagens Interop Primárias do Office).

  3. Clique em OK.

Adicionar declarações de Importações necessárias ou utilizar diretivas

  1. Em Explorador de Soluções, clique com o botão direito do rato no ficheiro ThisAddIn.vb ou ThisAddIn.cs e, em seguida, clique em Ver Código.

  2. Adicione as seguintes Imports instruções à parte superior do ficheiro de código se ainda não estiverem presentes.

    Imports Microsoft.Office.Interop
    

Criar uma lista de contas bancárias

  1. Em Explorador de Soluções, clique com o botão direito do rato no nome do projeto, clique em Adicionar e, em seguida, clique em Classe. Atribua um nome à classe Account.vb. Clique em Adicionar.

  2. Substitua a definição da Account classe pelo seguinte código. As definições de classe utilizam propriedades implementadas automaticamente. Para obter mais informações, veja Propriedades Implementadas Automaticamente.

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
  3. Para criar uma bankAccounts lista que contém duas contas, adicione o seguinte código ao ThisAddIn_Startup método em ThisAddIn.vb. As declarações de lista utilizam inicializadores de coleção. Para obter mais informações, veja Inicializadores de Coleção.

    Dim bankAccounts As New List(Of Account) From {
        New Account With {
                              .ID = 345,
                              .Balance = 541.27
                         },
        New Account With {
                              .ID = 123,
                              .Balance = -127.44
                         }
        }
    

Export data to Excel (Exportar dados para o Excel)

  1. No mesmo ficheiro, adicione o seguinte método à ThisAddIn classe. O método configura um livro do Excel e exporta dados para o mesmo.

    Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account),
                   ByVal DisplayAction As Action(Of Account, Excel.Range))
    
        With Me.Application
            ' Add a new Excel workbook.
            .Workbooks.Add()
            .Visible = True
            .Range("A1").Value = "ID"
            .Range("B1").Value = "Balance"
            .Range("A2").Select()
    
            For Each ac In accounts
                DisplayAction(ac, .ActiveCell)
                .ActiveCell.Offset(1, 0).Select()
            Next
    
            ' Copy the results to the Clipboard.
            .Range("A1:B3").Copy()
        End With
    End Sub
    
    • O Método Adicionar tem um parâmetro opcional para especificar um modelo específico. Os parâmetros opcionais permitem-lhe omitir o argumento desse parâmetro se quiser utilizar o valor predefinido do parâmetro. Uma vez que nenhum argumento é enviado no exemplo anterior, Add utiliza o modelo predefinido e cria um novo livro.

    • As Range propriedades e Offset do objeto Intervalo utilizam a funcionalidade de propriedades indexadas . As propriedades indexadas também lhe permitem utilizar a Value propriedade do Range objeto, eliminando a necessidade de utilizar a Value2 propriedade. A Value propriedade está indexada, mas o índice é opcional. Os argumentos opcionais e as propriedades indexadas funcionam em conjunto no exemplo seguinte.

  2. Adicione o seguinte código no final de DisplayInExcel para ajustar as larguras das colunas para se ajustarem ao conteúdo.

    ' Add the following two lines at the end of the With statement.
    .Columns(1).AutoFit()
    .Columns(2).AutoFit()
    

    Para obter mais informações sobre a incorporação de tipos de interop, veja os procedimentos "Para encontrar a referência pia" e "Para restaurar a dependência PIA" mais adiante neste artigo.

Invocar DisplayInExcel

  1. Adicione o seguinte código no final do ThisAddIn_StartUp método. A chamada para DisplayInExcel contém dois argumentos. O primeiro argumento é o nome da lista de contas a processar. O segundo argumento é uma expressão lambda multiline que define a forma como os dados devem ser processados. Os ID valores e balance de cada conta são apresentados em células adjacentes e a linha é apresentada a vermelho se o saldo for inferior a zero.

    DisplayInExcel(bankAccounts,
           Sub(account, cell)
               ' This multiline lambda expression sets custom
               ' processing rules for the bankAccounts.
               cell.Value = account.ID
               cell.Offset(0, 1).Value = account.Balance
    
               If account.Balance < 0 Then
                   cell.Interior.Color = RGB(255, 0, 0)
                   cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0)
               End If
           End Sub)
    
  2. Para executar o programa, prima F5. É apresentada uma folha de cálculo do Excel que contém os dados das contas.

Adicionar um documento Word

  1. Adicione o seguinte código no final do ThisAddIn_StartUp método para criar uma Word documento que contém uma ligação para o livro do Excel.

    Dim wordApp As New Word.Application
    wordApp.Visible = True
    wordApp.Documents.Add()
    wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
    

    O método PasteSpecial tem sete parâmetros, todos definidos como parâmetros de referência opcionais. Os argumentos nomeados e opcionais permitem-lhe designar os parâmetros a que pretende aceder por nome e enviar argumentos apenas para esses parâmetros. Neste exemplo, são enviados argumentos para indicar que deve ser criada uma ligação para o livro na Área de Transferência (parâmetroLink) e que a ligação deve ser apresentada no documento Word como um ícone (parâmetro DisplayAsIcon).

Executar a aplicação

  1. Prima F5 para executar a aplicação. O Excel inicia e apresenta uma tabela que contém as informações das duas contas no bankAccounts. Em seguida, é apresentado um documento Word que contém uma ligação para a tabela do Excel.

Limpar o projeto concluído

  1. No Visual Studio, clique em Solução Limpa no menu Compilar . Caso contrário, o suplemento será executado sempre que abrir o Excel no seu computador.

Localizar a referência pia

  1. Execute a aplicação novamente, mas não clique em Solução Limpa.

  2. Selecione Iniciar. Localize a versão do> Microsoft Visual Studio < e abra uma linha de comandos para programadores.

  3. Escreva ildasm na janela Linha de Comandos do Programador para Visual Studio e, em seguida, prima ENTER. É apresentada a janela IL DASM.

  4. No menu Ficheiro na janela IL DASM, selecione Abrir Ficheiro>. Faça duplo clique na versão> do Visual Studio <e, em seguida, faça duplo clique em Projetos. Abra a pasta do projeto e procure na pasta bin/Debug o nome do projeto.dll. Faça duplo clique no nome do projeto.dll. Uma nova janela apresenta os atributos do projeto, além de referências a outros módulos e assemblagens. Tenha em atenção que os espaços de nomes Microsoft.Office.Interop.Excel e Microsoft.Office.Interop.Word estão incluídos na assemblagem. Por predefinição no Visual Studio, o compilador importa os tipos de que precisa de um PIA referenciado para a sua assemblagem.

    Para obter mais informações, veja Como: Ver Conteúdo da Assemblagem.

  5. Faça duplo clique no ícone MANIFESTO . É apresentada uma janela que contém uma lista de assemblagens que contêm itens referenciados pelo projeto. Microsoft.Office.Interop.Excel e Microsoft.Office.Interop.Word não estão incluídos na lista. Uma vez que os tipos de que o projeto precisa foram importados para a sua assemblagem, não são necessárias referências a um PIA. Isto facilita a implementação. As PIAs não têm de estar presentes no computador do utilizador e, uma vez que uma aplicação não requer a implementação de uma versão específica de um PIA, as aplicações podem ser concebidas para funcionar com várias versões do Office, desde que existam as APIs necessárias em todas as versões.

    Uma vez que a implementação de PIAs já não é necessária, pode criar uma aplicação em cenários avançados que funcionem com várias versões do Office, incluindo versões anteriores. No entanto, isto só funciona se o seu código não utilizar APIs que não estejam disponíveis na versão do Office com a qual está a trabalhar. Nem sempre é claro se uma determinada API estava disponível numa versão anterior e, por esse motivo, não é recomendado trabalhar com versões anteriores do Office.

    Nota

    O Office não publicou PIAs antes do Office 2003. Por conseguinte, a única forma de gerar uma assemblagem interop para o Office 2002 ou versões anteriores é ao importar a referência COM.

  6. Feche a janela do manifesto e a janela de assemblagem.

Restaurar a dependência PIA

  1. No Explorador de Soluções, clique no botão Mostrar Todos os Ficheiros. Expanda a pasta Referências e selecione Microsoft.Office.Interop.Excel. Prima F4 para apresentar a janela Propriedades .
  2. Na janela Propriedades , altere a propriedade Tipos de Interoperabilidade De Incorporação de Verdadeiro para Falso.
  3. Repita os passos 1 e 2 neste procedimento para Microsoft.Office.Interop.Word.
  4. Prima F5 para verificar se o projeto ainda é executado corretamente.
  5. Repita os passos 1 a 3 do procedimento anterior para abrir a janela de assemblagem. Repare que Microsoft.Office.Interop.Word e Microsoft.Office.Interop.Excel já não estão na lista de assemblagens incorporadas.
  6. Faça duplo clique no ícone MANIFESTO e percorra a lista de assemblagens referenciadas. Ambos Microsoft.Office.Interop.Word e Microsoft.Office.Interop.Excel estão na lista. Uma vez que a aplicação faz referência aos PIAs do Excel e Word e a propriedade Tipos de Interop incorporados está definida como Falso, ambas as assemblagens têm de existir no computador do utilizador final.
  7. No Visual Studio, clique em Limpar Solução no menu Compilar para limpar o projeto concluído.

Ver também