Compartilhar via


Atualizando projetos do Excel e do Word migrados para o .NET Framework 4 ou o .NET Framework 4.5

Se você tiver Excel ou exprime o projeto que usa alguns dos seguintes recursos, você deve alterar seu código se a estrutura de destino é alterada para .NET Framework 4 ou a .NET Framework 4.5:

  • Métodos de GetVstoObject e de HasVstoObject

  • Classes gerados em projetos de um documento nível

  • Controles de formulários do Windows em documentos

  • Eventos de controle do conteúdo do Word

  • Classes de OLEObject e de OLEControl

  • Propriedade de Controls.Item (objeto)

  • Coleções que derivam de CollectionBase

Você também deve remover Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute e referências a Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy classe de projetos do excel que retargeted a .NET Framework 4 ou a .NET Framework 4.5. Visual Studio não remove este atributo ou a referência de classe para você.

Removendo o atributo ExcelLocale1033 de projetos do excel

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute foi removido da parte do Visual Studio 2010 Tools for Office Runtime que é usada para soluções que direcionam .NET Framework 4 ou .NET Framework 4.5.O common language runtime (CLR) em .NET Framework 4 e em .NET Framework 4.5 sempre passa a ID local 1033 para o modelo de objeto do excel, e você não pode usar esse atributo para desativar esse comportamento.Para obter mais informações, consulte Globalização e localização de soluções do Excel.

Para remover o ExcelLocale1033Attribute

  1. Com o projeto aberto no Visual Studio, abra Gerenciador de Soluções.

  2. Sob o nó de Propriedades (para C#) ou do nó Meu Projeto (Visual Basic), clique duas vezes no arquivo de código AssemblyInfo para abri-lo no editor de códigos.

    ObservaçãoObservação

    Em projetos Visual Basic, você deve clicar no botão de Mostrar todos os arquivos em Gerenciador de Soluções para ver o código o arquivo AssemblyInfo.

  3. Localize Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute e remova-o do arquivo ou comente-o ele para fora.

    <Assembly: ExcelLocale1033Proxy(True)>
    
    [assembly: ExcelLocale1033Proxy(true)]
    

Removendo uma referência à classe de ExcelLocal1033Proxy

Projetos que foram criados usando o Microsoft Visual Studio 2005 ferramenta ferramentas para o Microsoft Office system cria uma instância do objeto Excel Microsoft.Office.Interop.Excel.Application usando a classe de Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy .Essa classe foi removida da parte do Visual Studio 2010 Tools for Office Runtime que é usada para soluções que direcionam .NET Framework 4 ou .NET Framework 4.5.Portanto, você deve remover ou comentário para fora a linha de código que referencia essa classe.

Para remover a referência para a classe ExcelLocal1033Proxy

  1. Abra o projeto no Visual Studio, e abra Gerenciador de Soluções.

  2. Em Gerenciador de Soluções, abra o menu de atalho para ThisAddin.cs (para C#) ou ThisAddin.vb (Visual Basic), e escolha Exibir Código.

  3. No editor de códigos, na região de VSTO generated code , remover ou comente para fora a seguinte linha de código.

    Me.Application = CType(Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(GetType(Excel.Application), Me.Application), Excel.Application)
    
    this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);
    

Atualizando o código que usa os métodos de GetVstoObject e de HasVstoObject

Em projetos que direcionam o.NET Framework 3.5, GetVstoObject ou métodos de HasVstoObject estão disponíveis como métodos de extensão em um dos seguintes objetos nativos em seu projeto: Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet, ou Microsoft.Office.Interop.Excel.ListObject.Quando você chamar esses métodos, você não precisa passar um parâmetro.O exemplo de código demonstra como usar o método de GetVstoObject em um suplemento ao Word que direciona o.NET Framework 3.5.

Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject()
Microsoft.Office.Tools.Word.Document vstoDocument = 
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();

Em projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5, você deve alterar seu código para acessar esses métodos em uma das seguintes maneiras:

  • Você ainda pode acessar esses métodos como métodos de extensão em Microsoft.Office.Interop.Word.Document, em Microsoft.Office.Interop.Excel.Workbook, em Microsoft.Office.Interop.Excel.Worksheet, ou em objetos de Microsoft.Office.Interop.Excel.ListObject .No entanto, agora você deve passar o objeto retornado pela propriedade de Globals.Factory a esses métodos.

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
    
  • Você pode acessar esses métodos no objeto que é retornado pela propriedade de Globals.Factory .Quando você acessa estes métodos dessa maneira, você deve passar o objeto nativo que você deseja estender ao método.

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
    

Para obter mais informações, consulte Estendendo os documentos do Word e pastas de trabalho do Excel em suplementos de nível de aplicativo em tempo de execução.

Atualizar código que usa as instâncias das classes gerados em um documento nível projetos

Em um documento nível projetos direcionamento do .NET Framework 3.5, as classes gerados em projetos derivam das seguintes classes em Visual Studio Tools for Office Runtime:

Em projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5, os tipos em Visual Studio Tools for Office Runtime listado acima são interfaces, em vez de classes.As classes gerados nos projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5 derivam das novas classes em Visual Studio Tools for Office Runtime:

Se o código em seu projeto refere-se a uma instância de uma das classes geradas como a classe base que deriva, você deve modificar o código.

Por exemplo, em um projeto de pasta de trabalho do Excel que destinasse o .NET Framework 3.5, você pode ter um método auxiliar executando qualquer trabalho em instâncias de classes geradas de Sheetem em seu projeto.

Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.Worksheet)
    ' Do something to the worksheet object.
End Sub
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
    // Do something to the worksheet object.
}

Se você retarget o projeto a .NET Framework 4 ou a .NET Framework 4.5, você deve fazer uma das seguintes alterações em seu código:

  • Modifique qualquer código que chame o método de DoSomethingToSheet para passar a propriedade de Base de um objeto de Microsoft.Office.Tools.Excel.WorksheetBase em seu projeto.Essa propriedade retorna um objeto de Microsoft.Office.Tools.Excel.Worksheet .

    DoSomethingToSheet(Globals.Sheet1.Base)
    
    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • Modifique o parâmetro do método de DoSomethingToSheet para esperar em vez de um objeto de Microsoft.Office.Tools.Excel.WorksheetBase .

    Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.WorksheetBase)
        ' Do something to the worksheet object.
    End Sub
    
    private void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet)
    {
        // Do something to the worksheet object.
    }
    

Atualizando o código que usa controles de formulários do Windows em documentos

Você deve adicionar uma instrução de using (C#) ou de Imports (Visual Basic) para Microsoft.Office.Tools.Excel ou o namespace de Microsoft.Office.Tools.Word à parte superior do arquivo de código que usar a propriedade de Controls para adicionar controles por meio de formulários do Windows para o documento ou à planilha.

Em projetos que direcionam o.NET Framework 3.5, os métodos que adicionam controles de formulários do Windows (como o método de AddButton ) são definidos nas classes de Microsoft.Office.Tools.Excel.ControlCollection e de Microsoft.Office.Tools.Word.ControlCollection .

Em projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5, esses métodos são métodos de extensão que estão disponíveis na propriedade de Controls .Para usar esses métodos de extensão, o arquivo de código em que você usa os métodos deve ter uma instrução de using ou de Imports para Microsoft.Office.Tools.Excel ou o namespace de Microsoft.Office.Tools.Word .Essa instrução é gerada automaticamente em novos projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5.No entanto, essa instrução não é adicionada automaticamente nos projetos que direcionam o.NET Framework 3.5, portanto você deve adicioná-lo quando você retarget o projeto.

Para obter mais informações, consulte Adicionar controles a documentos do Office em tempo de execução.

Atualizando o código que manipula eventos de controle do conteúdo do Word

Em projetos que direcionam o.NET Framework 3.5, os eventos de controles de conteúdo do Word são tratadas pelo delegado genérico de EventHandler<TEventArgs> .Em projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5, esses eventos são tratados por outros representantes.

A seguinte tabela lista os eventos de controle do conteúdo do Word e representantes que são associados com eles nos projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5.

Evento

Representante para usar em .NET Framework 4 e em projetos de .NET Framework 4.5

Added

ContentControlAddedEventHandler

ContentUpdating

ContentControlContentUpdatingEventHandler

Deleting

ContentControlDeletingEventHandler

Entering

ContentControlEnteringEventHandler

Exiting

ContentControlExitingEventHandler

StoreUpdating

ContentControlStoreUpdatingEventHandler

Atualizando o código que usa as classes de OLEObject e de OLEControl

Em projetos que direcionam o.NET Framework 3.5, você pode adicionar controles personalizados (como o Windows controles de usuário) para um documento ou a uma planilha usando as classes de Microsoft.Office.Tools.Excel.OLEObject e de Microsoft.Office.Tools.Word.OLEControl .

Em projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5, essas classes foram substituídas por Microsoft.Office.Tools.Excel.ControlSite e Microsoft.Office.Tools.Word.ControlSite interface.Você deve modificar o código que se refere a Microsoft.Office.Tools.Excel.OLEObject e Microsoft.Office.Tools.Word.OLEControl para se referir ao invés Microsoft.Office.Tools.Excel.ControlSite e Microsoft.Office.Tools.Word.ControlSite.Diferente dos novos nomes, esses controles se comportam da mesma maneira que tornam nos projetos que direcionam o.NET Framework 3.5.

Para obter mais informações, consulte Adicionar controles a documentos do Office em tempo de execução.

Atualizando o código que utiliza a propriedade de Controls.Item (objeto)

Em projetos que direcionam o.NET Framework 3.5, você pode usar a propriedade de Item(Object) de coleção de Microsoft.Office.Tools.Word.Document.Controls ou de Microsoft.Office.Tools.Excel.Worksheet.Controls para determinar se um documento ou uma planilha têm um controle especificado.

Em projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5, a propriedade de Item(Object) foi removida dessas coleções.Para determinar se um documento ou uma planilha contêm um controle específico, use o método de Contains(System.Object) de coleção de Document.Controls ou de Worksheet.Controls em vez disso.

Para obter mais informações sobre a coleção de Controls documentos e de planilhas, consulte Adicionar controles a documentos do Office em tempo de execução.

Atualizando o código que usa as coleções que derivam de CollectionBase

Em projetos que direcionam o.NET Framework 3.5, vários a coleção em Visual Studio Tools for Office Runtime deriva da classe de CollectionBase , como Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, e Microsoft.Office.Tools.Word.ControlCollection.

Em projetos que destinam-se .NET Framework 4 ou .NET Framework 4.5, esses tipos de coleção são agora interfaces que não derivam de CollectionBase.Alguns membros não estão mais disponíveis nesses tipos de coleção, como Capacity, List, e InnerList.

Consulte também

Conceitos

Migrando soluções do Office para o .NET Framework 4 ou o .NET Framework 4.5

Controles de conteúdo

Estendendo os documentos do Word e pastas de trabalho do Excel em suplementos de nível de aplicativo em tempo de execução

Adicionar controles a documentos do Office em tempo de execução

Acesso global a objetos em projetos do Office