O aplicativo cliente Visual Studio .NET ou Visual Studio 2005 não é possível capturar os eventos que são gerados por um controle ActiveX do Office Spreadsheet 11.0

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: 834614
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
o aplicativo cliente do Microsoft Visual Studio .NET ou Visual Studio 2005 não é possível capturar os eventos que são gerados por um controle ActiveX existente (11.0 de planilha do Microsoft Office).
Sintomas
Quando o controle ActiveX do Microsoft Office Spreadsheet 11.0 gera eventos, o código gerenciado não é possível capturar esses eventos.
Causa
A interface IChartInterface do arquivo OWC11.dll tem identificadores de despacho (DISPIDs) em seus métodos. Quando você derivar a classe de escuta de evento da interface IChartInterface , os métodos substituídos não oferecem suporte DISPIDs da interface IChartInterface . Quando o Microsoft Office Spreadsheet 11.0 tenta disparar o evento, a classe de escuta de evento não pode localizar os DISPIDs.
Resolução
Para resolver esse problema, execute essas etapas:
  1. Execute a ferramenta AxImp.exe no arquivo OWC11.dll.
    1. Localize o arquivo OWC11.dll. O arquivo OWC11.dll é uma DLL para o controle ActiveX de 11.0 de planilha do Microsoft Office. O arquivo OWC11.dll normalmente está localizado na seguinte pasta: C:\Program Files\Common Files\Microsoft Shared\Web Components\11.
    2. Clique em Iniciar , clique em Executar e digite cmd na Abrir caixa.
    3. No prompt de comando, localize o arquivo OWC11.dll.
    4. Digite aximp /source OWC11.dll no prompt de comando. Observe que o arquivo AxOWC11.dll e o arquivo AxOWC11.cs são gerados e que são colocados na pasta mesma onde esse comando é executado.

      O arquivo AxImp.exe converte a biblioteca inteira de tipos de controle do ActiveX e produz um conjunto de assemblies que contêm os metadados de tempo de execução de idioma comum e controlar a implementação para os tipos são definidos na biblioteca de tipo original.
  2. Modificar o arquivo AxOWC11.cs. Para fazer isso, adicione o código nas etapas a seguir para modificar as classes de controle e as classes EventMulticaster correspondentes no arquivo de origem que é gerado.
    1. Defina o atributo ToolboxItem como true no arquivo de classe gerada. Para fazer isso adicionar o código a seguir antes das classes de controle :
      [System.ComponentModel.ToolBoxItem(True)]
      as classes de controle são da seguinte maneira:
      • AxChartSpace
      • AxSpreadsheet
      • AxDataSourceControl
      • AxRecordNavigationControl
      • AxPivotTable
    2. Adicione o seguinte código acima classes EventMulticaster :
      [System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
      as classes EventMulticaster são da seguinte maneira:
      • AxChartSpaceEventMulticaster
      • AxSpreadsheetEventMulticaster
      • AxDataSourceControlEventMulticaster
      • AxRecordNavigationControlEventMulticaster
      • AxPivotTableEventMulticaster
  3. Compile o arquivo modificado AxOWC11.cs.
    1. Localize e copie os assemblies referenciados no arquivo de AxOWC11.cs para uma pasta. Os assemblies referenciados são da seguinte maneira:
      • Microsoft.Office.Interop.Owc11.dll
      • Adodb.dll
      • Mscomctl.dll
      • Msdatasrc.dll
    2. No prompt de comando, altere o diretório para C:\Temp.
    3. Para compilar o arquivo AxOWC11.cs, digite o seguinte comando no prompt de comando:
      csc /t:library  /lib:c:\Temp /r:Microsoft.Office.Interop.Owc11.dll;ADODB.dll;MSCOMCTL.DLL;msdatasrc.dll AxOWC11.cs
      Observação Temp é uma pasta que você criar no seu disco rígido. Esta pasta contém os assemblies referenciados e o AxOWC11.cs arquivo.
  4. Teste o arquivo AxOWC11.cs modificado.
    1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Em Project Types , clique em Projetos do Visual Basic e, em seguida, clique em Windows Application em modelos .

      Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
    4. No menu Exibir , clique em caixa de ferramentas .
    5. Clique com o botão direito da caixa de ferramentas e clique em Adicionar ou remover itens . A caixa de diálogo Customize Toolbox será exibida.

      Observação No Visual Studio 2005, clique com o botão direito da caixa de ferramentas e clique em Escolher itens .
    6. Na guia Componentes COM , clique para selecionar 11.0 de planilha do Microsoft Office e, em seguida, clique em OK . O Microsoft Office 11.0 planilha controle ActiveX é adicionado à caixa de ferramentas.
    7. Adicionar o planilha do Microsoft Office 11.0 controle ActiveX para o formulário de Form1.
    8. No Solution Explorer, expanda referências sob o projeto e, em seguida, clique em AxOWC11 .
    9. No menu Exibir , clique em Remover .
    10. Clique em referências em Solution Explorer e, em seguida, clique em Add Reference . O Adicionar referência caixa de diálogo é exibida.
    11. Clique em Procurar , localize e selecione o arquivo AxOWC11.dll e, em seguida, clique em OK .
    12. No menu Exibir , clique em código .
    13. Selecione AxSpreadsheet1 na caixa na janela de modo de exibição de código.
    14. Selecione o evento EndEdit na caixa de segunda, na janela de modo de exibição de código. O procedimento a seguir é adicionado à exibição de código:
      Private Sub AxSpreadsheet1_EndEdit(ByVal sender As Object, ByVal e As AxMicrosoft.Office.Interop.Owc11.ISpreadsheetEventSink_EndEditEvent) Handles AxSpreadsheet1.EndEdit    End Sub
    15. Adicione o seguinte código para este procedimento:
      MessageBox.Show("Test EndEdit")
  5. Criar e executar o aplicativo.
    1. No menu Build , clique em Build Solution .
    2. No menu Debug , clique em Iniciar .
    3. Editar a célula na planilha do Microsoft Excel que aparece e clique na próxima célula na planilha do Excel. Uma caixa de diálogo com o seguinte texto é exibida:
      Teste EndEdit
Situação
Esse comportamento é por design.
Mais Informações

Etapas para reproduzir o comportamento

  1. Crie um aplicativo do Windows.
    1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Em Project Types , clique em Projetos do Visual Basic e, em seguida, clique em Windows Application em modelos .

      Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
  2. Adicione o controle ActiveX de planilha do Microsoft Office para o formulário Form1.
    1. No menu Exibir , clique em caixa de ferramentas .
    2. Clique com o botão direito da caixa de ferramentas e clique em Adicionar ou remover itens . A caixa de diálogo Customize Toolbox será exibida.

      Observação No Visual Studio 2005, clique com o botão direito da caixa de ferramentas e clique em Escolher itens .
    3. Na guia Componentes COM , clique para selecionar 11.0 de planilha do Microsoft Office e, em seguida, clique em OK . O Microsoft Office 11.0 planilha controle ActiveX é adicionado à caixa de ferramentas.
    4. Adicione o controle ActiveX 11.0 de planilha do Microsoft Office ao formulário Form1.
  3. Adicione o código ao evento EndEdit .
    1. No menu Exibir , clique em código .
    2. Selecione AxSpreadsheet1 na caixa na janela de modo de exibição de código.
    3. Selecione o evento EndEdit na caixa de segunda, na janela de modo de exibição de código. O procedimento a seguir é adicionado à exibição de código:
      Private Sub AxSpreadsheet1_EndEdit(ByVal sender As Object, ByVal e As AxMicrosoft.Office.Interop.Owc11.ISpreadsheetEventSink_EndEditEvent) Handles AxSpreadsheet1.EndEdit    End Sub
    4. Adicione o seguinte código para este procedimento:
      MessageBox.Show("Test EndEdit")
  4. Criar o aplicativo e, em seguida e executar o aplicativo.
    1. No menu Build , clique em Build Solution .
    2. No menu Debug , clique em Iniciar .
    3. Edite a célula na planilha do Excel que aparece. Clique na próxima célula da planilha do Excel. A caixa de diálogo que indica que o evento não é acionado não aparece.
Referências
Para obter mais informações, visite os seguintes sites do Microsoft Developer Network (MSDN) da:
Controle ActiveX do Windows Forms importador (aximp.exe)
http://msdn2.microsoft.com/en-us/library/8ccdh774(vs.71).aspx

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 834614 - Última Revisão: 12/08/2015 05:55:43 - Revisão: 3.5

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# 2005 Express Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbofficewebspread kbdll kbactivexevents kbevent kbprb KB834614 KbMtpt
Comentários