COMO: Processar eventos do Excel usando o .NET translation from VPE for Csharp Visual

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 302815
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 302814.
Para uma versão deste artigo do Microsoft Visual C++. NET, consulte 309301.

NESTA TAREFA

Sumário
Este artigo passo a passo descreve como manipular eventos partir de um cliente de automação que é desenvolvido com Visual translation from VPE for Csharp Excel .NET.

back to the top

Visão geral de manipulação de eventos

Visual translation from VPE for Csharp .NET usa delegados para manipular o modelo de objeto componente (COM) eventos. Delegados são um conceito novo no Visual Studio. NET. No caso de eventos do COM, um delegado escuta de eventos do servidor COM e as encaminha para uma função translation from VPE for Csharp Visual.

back to the top

Criar o cliente de automação do Visual translation from VPE for Csharp .NET

As etapas a seguintes demonstram como usar delegados para manipular eventos partir de um cliente de automação que é desenvolvido com Visual translation from VPE for Csharp .NET do Excel.
  1. Inicie o Microsoft Visual Studio NET.. No menu arquivo , clique em novo e, em seguida, clique em Project . Em projetos do Visual translation from VPE for Csharp , selecione Windows Application . O Form1 é criado por padrão.
  2. Adicione uma referência à Biblioteca de objetos do Microsoft Excel . Para fazer isso, execute as seguintes etapas:
    1. No menu Project , clique em Add Reference .
    2. Na guia COM , localize a Biblioteca de objetos do Microsoft Excel 10.0 e clique em Selecionar . Observação : se você ainda não fez isso, a Microsoft recomenda que você baixar e instala o Microsoft Office XP Primary Interop Assemblies (PIAs). Para obter informações adicionais sobre PIAs do Office XP, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      328912INFO: Microsoft Office XP PIAs estão disponíveis para download
    3. Clique em OK na caixa de diálogo Add References para aceitar as seleções. Se você receber uma solicitação para gerar wrappers para as bibliotecas que você selecionou, clique em Sim .
  3. No Solution Explorer, clique duas vezes em Form1.cs para exibir o formulário no modo de design.
  4. No menu Exibir , selecione a caixa de ferramentas para exibir a caixa de ferramentas e adicionar um botão ao Form1. Alterar a propriedade Text do botão usar representantes .
  5. No menu Exibir , selecione o código para exibir a janela de código para o formulário. Adicione o seguinte código ao manipulador de evento Click do botão:
    private void button1_Click(object sender, System.EventArgs e){   UseDelegates();}					
  6. Adicione o seguinte código abaixo o manipulador de eventos Click para o botão:
    //Excel Automation variables.Excel.Application xlApp;Excel.Workbook xlBook;Excel.Worksheet xlSheet1, xlSheet2, xlSheet3;//Excel event delegate variables.Excel.AppEvents_WorkbookBeforeCloseEventHandler EventDel_BeforeBookClose;Excel.DocEvents_ChangeEventHandler EventDel_CellsChange;private void UseDelegates(){   //Start Excel and create a new workbook.   xlApp = new Excel.ApplicationClass();   xlBook = xlApp.Workbooks.Add( Missing.Value );   xlBook.Windows.get_Item(1).Caption = "Uses Delegate";   xlSheet1 = (Excel.Worksheet)xlBook.Worksheets.get_Item(1);   xlSheet2 = (Excel.Worksheet)xlBook.Worksheets.get_Item(2);   xlSheet3 = (Excel.Worksheet)xlBook.Worksheets.get_Item(3);   xlSheet1.Activate();   //Add an event handler for the WorkbookBeforeClose Event of the   //Application object.   EventDel_BeforeBookClose =       new Excel.AppEvents_WorkbookBeforeCloseEventHandler( BeforeBookClose);   xlApp.WorkbookBeforeClose += EventDel_BeforeBookClose;   //Add an event handler for the Change event of both Worksheet objects.   EventDel_CellsChange = new Excel.DocEvents_ChangeEventHandler( CellsChange);   xlSheet1.Change += EventDel_CellsChange;   xlSheet2.Change += EventDel_CellsChange;   xlSheet3.Change += EventDel_CellsChange;   //Make Excel visible and give the user control.   xlApp.Visible = true;   xlApp.UserControl = true;}private void CellsChange(Excel.Range Target ){   //Called when a cell or cells on a worksheet are changed.   Debug.WriteLine("Delegate: You Changed Cells " +       Target.get_Address( Missing.Value, Missing.Value,       Excel.XlReferenceStyle.xlA1, Missing.Value, Missing.Value ) +       " on " + Target.Worksheet.Name);}private void BeforeBookClose(Excel.Workbook Wb, ref bool Cancel ){   //This is called when you choose to close the workbook in Excel.   //The event handlers are removed and then the workbook is closed    //without saving changes.   Wb.Saved = true;   Debug.WriteLine("Delegate: Closing the workbook and removing event handlers.");   xlSheet1.Change -= EventDel_CellsChange;   xlSheet2.Change -= EventDel_CellsChange;   xlSheet3.Change -= EventDel_CellsChange;   xlApp.WorkbookBeforeClose -= EventDel_BeforeBookClose;}      					
  7. Adicione o seguinte código na parte superior do arquivo, abaixo as outras declarações usando :
    using System.Reflection;using System.Diagnostics;using Excel = Microsoft.Office.Interop.Excel;					
back to the top

Testar o código

  1. Pressione CTRL + ALT + O, para exibir a janela de saída.
  2. Pressione F5 para compilar e executar o programa.
  3. No formulário, clique em Usar representante . O programa inicia o Excel e cria uma pasta de trabalho com três planilhas.
  4. Adicione quaisquer dados às celulas de ambas as planilhas. Examine a janela de saída do Visual Studio para verificar se os manipuladores de eventos são chamados.
  5. Feche o Excel e feche o formulário para finalizar a sessão de depuração.
back to the top

Solução de problemas

Quando você testar o código, você receberá a seguinte mensagem de erro:
Uma exceção sem tratamento do tipo 'System.InvalidCastException' ocorreu no interop.excel.dll

Obter informações adicionais: nenhuma interface suportada
Se você receber esse erro, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
316653PROBLEMA: Erro usando WithEvents ou delegados para manipular eventos do Excel a partir do Visual Basic .NET ou Visual translation from VPE for Csharp .NET
back to the top
Referências
Para obter mais informações, consulte o seguinte Microsoft Developer site Network (MSDN): Para obter informações adicionais sobre como automatizar o Excel a partir do Visual .NET translation from VPE for Csharp, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
302084COMO: Automatizar Microsoft Excel do Microsoft Visual translation from VPE for Csharp .NET
302096COMO: Automatizar Excel com Visual .NET translation from VPE for Csharp preenchimento ou obter dados em um intervalo usando matrizes
302902COMO: Binding para servidores de automação do Office com translation from VPE for Csharp Visual
back to the top

(c) Microsoft Corporation 2002, todos os direitos reservados. Contribuições de Joel Alley, Microsoft Corporation.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 302815 - Última Revisão: 12/06/2015 03:40:49 - Revisão: 6.2

Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Excel 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbautomation kbhowtomaster KB302815 KbMtpt
Comentários