Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Visual Studio oferece funcionalidades no Visual Basic que melhoram a programação do Microsoft Office. As funcionalidades do Visual Basic incluem propriedades autoimplementadas, instruções em expressões lambda e inicializadores de coleção. Você pode incorporar informações de tipo, que permitem a implantação de assemblies que interagem com componentes COM sem implantar assemblies de interoperabilidade primários (PIAs) no computador do usuário. Para obter mais informações, consulte Instruções passo a passo: Inserindo tipos de assemblies gerenciados.
Este passo a passo demonstra essas funcionalidades no contexto de programação do Office, mas muitos deles também são úteis na programação em geral. No passo a passo, você usa um aplicativo Suplemento do Excel para criar uma pasta de trabalho do Excel. Em seguida, você cria um documento do Word que contém um link para a pasta de trabalho. Por fim, você vê como habilitar e desabilitar a dependência de PIA.
Pré-requisitos
Você deve ter o Microsoft Office Excel e o Microsoft Office Word instalados no computador para concluir esse passo a passo.
Observação
Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.
Configurar um aplicativo Suplemento do Excel
Inicie o Visual Studio.
No menu Arquivo , aponte para Novoe clique em Projeto.
No painel Modelos Instalados, expanda Visual Basic, expanda Office e, em seguida, clique no ano da versão do produto do Office.
No painel Modelos, clique em Suplemento do Excel <versão>.
Observe a parte superior do painel Modelos para se certificar de que .NET Framework 4 ou uma versão posterior, é exibido na caixa Estrutura de Destino.
Digite um nome para seu projeto na caixa Nome, se desejar.
Clique em OK.
O novo projeto aparece no Gerenciador de Soluções.
Adicionar referências
No Gerenciador de Soluções, clique com o botão direito do mouse no nome do projeto e, em seguida, clique em Adicionar Referência. A caixa de diálogo Adicionar Referência é exibida.
Na guia Assemblies, selecione Microsoft.Office.Interop.Excel, versão
<version>.0.0.0(para uma chave para os números de versão de produto do Office, consulte Versões da Microsoft), na lista Nome do componente e mantenha a tecla CTRL pressionada e selecione Microsoft.Office.Interop.Word,version <version>.0.0.0. Se você não vir os assemblies, talvez seja necessário verificar se eles estão instalados e exibidos (consulte Como: Instalar assemblies de interoperabilidade primária do Office).Clique em OK.
Adicionar instruções Imports necessárias ou diretivas de uso
No Gerenciador de Soluções, clique com o botão direito do mouse no arquivo ThisAddIn.vb ou ThisAddIn.cs e clique em Exibir Código.
Adicione as diretivas
Importsa seguir à parte superior do arquivo de código, se elas ainda não estiverem presentes.Imports Microsoft.Office.Interop
Criar uma lista de contas bancárias
No Gerenciador de Soluções, clique com o botão direito do mouse no nome do projeto, clique em Adicionar e clique em Classe. Nomeie a classe Account.vb. Clique em Adicionar.
Substitua a definição da classe
Accountpelo código a seguir. As definições de classe usam propriedades autoimplementadas. Para obter mais informações, consulte Propriedades autoimplementadas.Public Class Account Property ID As Integer = -1 Property Balance As Double End ClassPara criar uma lista
bankAccountsque contém duas contas, adicione o seguinte código ao métodoThisAddIn_Startupem ThisAddIn.vb. As declarações de lista usam inicializadores de coleção. Para obter mais informações, consulte 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 } }
Exportar dados para o Excel
No mesmo arquivo, adicione o método a seguir para a classe
ThisAddIn. O método configura uma planilha do Excel e exporta dados para ela.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 SubO método Add tem um parâmetro opcional para especificar um modelo específico. Os parâmetros opcionais permitem omitir o argumento para esse parâmetro, se você deseja usar o valor padrão do parâmetro. Como nenhum argumento é enviado no código anterior,
Addusa o modelo padrão e cria uma nova pasta de trabalho.As propriedades
RangeeOffsetdo objeto Range usam o recurso de propriedades indexadas. Propriedades indexadas também permitem que você use a propriedadeValuedo objetoRange, eliminando a necessidade de usar a propriedadeValue2. A propriedadeValueé indexada, mas o índice é opcional. Argumentos opcionais e propriedades indexadas trabalham juntos no exemplo a seguir.
Adicione o seguinte código no final de
DisplayInExcelpara ajustar as larguras das colunas para adequar o 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 como inserir tipos de interoperabilidade, consulte os procedimentos "Localizar a referência de PIA" e "Restaurar a dependência de PIA" posteriormente neste artigo.
Invocar DisplayInExcel
Adicione o código a seguir no final do método
ThisAddIn_StartUp. A chamada paraDisplayInExcelcontém dois argumentos. O primeiro argumento é o nome da lista de contas a ser processada. O segundo argumento é uma expressão lambda com várias linhas que define como os dados deverão ser processados. Os valoresIDebalancede cada conta serão exibidos em células adjacentes e a linha será exibida em vermelho se o equilíbrio for menor do que 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)Para executar o programa, pressione F5. Uma planilha do Excel é exibida contendo os dados das contas.
Adicionar um documento do Word
Adicione o código a seguir ao final do método
ThisAddIn_StartUppara criar um documento do Word que contém um link para a pasta de trabalho 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, que são definidos como parâmetros de referência opcionais. Argumentos opcionais e nomeados permitem designar os parâmetros que você deseja acessar pelo nome e enviar argumentos apenas para esses parâmetros. Neste exemplo, os argumentos são enviados para indicar que deve ser criado um link para a pasta de trabalho na área de transferência (parâmetro
Link), e que o link será exibido no documento do Word como um ícone (parâmetroDisplayAsIcon).
Executar o aplicativo
- Pressione F5 para executar o aplicativo. O Excel é iniciado e exibe uma tabela que contém as informações das duas contas em
bankAccounts. Em seguida, um documento do Word é exibido contendo um link para a tabela do Excel.
Limpar o projeto concluído
- No Visual Studio, clique em Limpar Solução no menu Compilar. Caso contrário, o suplemento será executado toda vez que você abrir o Excel no seu computador.
Localizar a referência de PIA
Execute o aplicativo novamente, mas não clique em Limpar Solução.
Selecione Iniciar. Localize Microsoft Visual Studio <versão>> e abra o prompt de comando do desenvolvedor.
Digite
ildasmna janela Prompt de Comando do Desenvolvedor para Visual Studio e pressione Enter. A janela IL DASM é exibida.No menu Arquivo na janela IL DASM, selecione Arquivo>Abrir. Clique duas vezes em Visual Studio <versão> e clique duas vezes em Projetos. Abra a pasta do seu projeto e procure na pasta bin/Debug por nome do projeto.dll. Clique duas vezes em nome do projeto.dll. Uma nova janela exibe os atributos do projeto, além das referências a outros módulos e assemblies. Observe que os namespaces
Microsoft.Office.Interop.ExceleMicrosoft.Office.Interop.Wordestão incluídos no assembly. Por padrão, no Visual Studio, o compilador importa os tipos que você precisa de um PIA referenciado para o seu assembly.Para obter mais informações, consulte Como exibir o conteúdo de um assembly.
Clique duas vezes no ícone MANIFEST. Uma janela será exibida contendo uma lista de assemblies que contêm itens referenciados pelo projeto.
Microsoft.Office.Interop.ExceleMicrosoft.Office.Interop.Wordnão estão incluídos na lista. Como os tipos do seu projeto precisam ter sido importados para o assembly, referências a um PIA não são necessárias. Isso facilita a implantação. Os PIAs não precisam estar presentes no computador do usuário e como um aplicativo não requer a implantação de uma versão específica de um PIA, os aplicativos podem ser projetados para trabalhar com várias versões do Office, desde que as APIs necessárias existam em todas as versões.Como a implantação de PIAs não é mais necessária, você pode criar um aplicativo em cenários avançados que funcione com várias versões do Office, incluindo versões anteriores. No entanto, isso funcionará apenas se seu código não usar quaisquer APIs que não estejam disponíveis na versão do Office na qual você está trabalhando. Não é sempre claro se uma determinada API estava disponível em uma versão anterior e, por essa razão, não é recomendado trabalhar com versões anteriores do Office.
Observação
O Office não publicou PIAs antes do Office 2003. Portanto, a única maneira de gerar um assembly de interoperabilidade para o Office 2002 ou versões anteriores é importando referência COM.
Feche a janela do manifesto e a janela do assembly.
Restaurar a dependência de PIA
- Em Gerenciador de Soluções, clique no botão Mostrar Todos os Arquivos. Expanda a pasta Referências e selecione Microsoft.Office.Interop.Excel. Pressione F4 para exibir a janela Propriedades.
- Na janela Propriedades, altere a propriedade Inserir Tipos de Interoperabilidade de True para False.
- Repita as etapas 1 e 2 deste procedimento para
Microsoft.Office.Interop.Word. - Pressione F5 para verificar se o projeto ainda é executado corretamente.
- Repita as etapas de 1 a 3 do procedimento anterior para abrir a janela do assembly. Observe que
Microsoft.Office.Interop.WordeMicrosoft.Office.Interop.Excelnão estão mais na lista de assemblies inseridos. - Clique duas vezes no ícone MANIFEST e role a lista de assemblies referenciados. Ambos
Microsoft.Office.Interop.WordeMicrosoft.Office.Interop.Excelestão na lista. Como o aplicativo faz referência aos PIAs do Excel e do Word e a propriedade Inserir Tipos de Interoperabilidade está definida como False, ambos os assemblies devem existir no computador do usuário final. - No Visual Studio, clique em Limpar Solução no menu Compilar para limpar o projeto concluído.
Confira também
- Propriedades autoimplementadas (Visual Basic)
- Inicializadores de Coleção
- Parâmetros Opcionais
- Passando argumentos por posição e nome
- Associação Antecipada e Tardia
- Expressões Lambda
- Instruções passo a passo: Inserindo tipos de assemblies gerenciados
- Passo a passo: criando o primeiro suplemento do VSTO para Excel
- Interoperabilidade COM