Atualização do Excel e projetos do Word que você migrar para o.NET Framework 4

Se você tiver um projeto do Excel ou Word usa qualquer um dos seguintes recursos, você deve modificar seu código se o framework de destino for alterado para o .NET Framework 4:

  • Marcas inteligentes

  • Métodos GetVstoObject e HasVstoObject

  • Classes geradas em projetos de nível de documento

  • Controles do Windows Forms em documentos

  • Eventos de controle de conteúdo do Word

  • Classes OLEObject e OLEControl

  • Propriedade de Controls.item(Object)

  • Coleções que derivam de CollectionBase

Você também deve remover o Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute de projetos do Excel que são redirecionados para o .NET Framework 4. Visual Studio não remove automaticamente esse atributo para você.

Remover o atributo de ExcelLocale1033 de projetos do Excel

O Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute foi removido da parte da Visual Studio 2010 Tools for Office Runtime que é usado para soluções que se destinam a .NET Framework 4. O common language runtime (CLR) na .NET Framework 4 sempre passa localidade identificação 1033 para o modelo de objeto do Excel e você não poderá mais usar esse atributo para desativar esse comportamento. For more information, see Formatação de dados no Excel com várias configurações regionais.

Para remover o ExcelLocale1033Attribute

  1. Com o projeto aberto no Visual Studio, abra Solution Explorer.

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

    ObservaçãoObservação

    Em projetos de Visual Basic, você deve clicar na Mostrar todos os arquivos botão no Solution Explorer para ver o arquivo de código AssemblyInfo.

  3. Localize o Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute e removê-lo do arquivo ou comentá-la fora.

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

Atualizando o código que cria as marcas inteligentes

Se você tiver um projeto do Excel ou Word cria marcas inteligentes, você deve fazer as seguintes alterações em seu código se você alterar a estrutura de destino:

  • Modificar qualquer código que cria objetos de ação e de marca inteligentes.

  • Modificar qualquer código que define uma classe de marca inteligente com um reconhecedor personalizado.

ObservaçãoObservação

As marcas inteligentes estão obsoletas no Excel 2010 e Word 2010. For more information, see Visão geral sobre marcas inteligentes.

Para obter mais informações, consulte as instruções abaixo.

Criação de objetos de ação e de marca inteligente

Você deve modificar a maneira que você cria objetos de ação e de marca inteligente no seu código. Em projetos destinados a.NET Framework 3.5, os tipos de ação e de marca inteligentes são classes que você pode instanciar diretamente. Em projetos destinados a .NET Framework 4, esses tipos são interfaces que você não pode criar uma instância diretamente.

Se a estrutura de destino do projeto é alterada para o .NET Framework 4, você deve criar os objetos de marca e a ação inteligentes usando métodos fornecidos pelo Globals.Factory propriedade no seu projeto. For more information, see Arquitetura de marcas inteligentes.

A tabela a seguir lista os tipos de ação e de marca inteligentes e o método usar para criar instâncias dos tipos de projetos destinados a .NET Framework 4.

Tipo de ação e de marca inteligente

O método de fábrica para usar em .NET Framework 4 projetos

Microsoft.Office.Tools.Excel.Action

CreateActionmétodo de Microsoft.Office.Tools.Excel.Factory classe.

Microsoft.Office.Tools.Excel.SmartTag

CreateSmartTagmétodo de Microsoft.Office.Tools.Excel.Factory classe.

Microsoft.Office.Tools.Word.Action

CreateActionmétodo de Microsoft.Office.Tools.Word.Factory classe.

Microsoft.Office.Tools.Word.SmartTag

CreateSmartTagmétodo de Microsoft.Office.Tools.Word.Factory classe.

Definir Classes de marca inteligente com reconhecedores de personalizado

Se você definir sua própria classe de marca inteligente com um reconhecedor personalizado, você deve modificar seu código. Em projetos destinados a.NET Framework 3.5, você derivar a classe a partir de Microsoft.Office.Tools.Word.SmartTag ou Microsoft.Office.Tools.Excel.SmartTag classe. Em projetos destinados a .NET Framework 4, em vez disso, você define uma classe que implementa o Microsoft.Office.Tools.Word.ISmartTagExtension ou Microsoft.Office.Tools.Excel.ISmartTagExtension interface.

For more information, see Arquitetura de marcas inteligentes.

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

Em projetos destinados a.NET Framework 3.5, o GetVstoObject ou HasVstoObject métodos 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, or Microsoft.Office.Interop.Excel.ListObject. Quando você chamar esses métodos, você não precisará passar um parâmetro. O exemplo de código a seguir demonstra como usar o GetVstoObject o método em um suplemento do Word que se destina a.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 destinados a .NET Framework 4, você deve modificar 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 no Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet, ou Microsoft.Office.Interop.Excel.ListObject objetos. No entanto, você deve passar o objeto retornado por agora o Globals.Factory propriedade para 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);
    
  • Como alternativa, você pode acessar esses métodos no objeto retornado pelo Globals.Factory propriedade. Quando você acessar esses métodos dessa maneira, você deve passar o objeto nativo que você deseja estender para o 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);
    

For more information, see Estendendo os documentos do Word e pastas de trabalho do Excel em suplementos de nível de aplicativo em tempo de execução and Obtendo Extended objetos a partir de objetos nativos do Office no nível do documento personalizações.

Atualizando o código que usa as instâncias das Classes geradas em projetos de nível de documento

No nível do documento de destino projetos do.NET Framework 3.5, as classes geradas nos projetos derivam as seguintes classes na Visual Studio Tools for Office runtime:

Em projetos destinados a .NET Framework 4, os tipos na Visual Studio Tools for Office runtime listados acima são interfaces, em vez de classes. Classes gerado em projetos destinados a .NET Framework 4 derivar as seguintes novas classes na 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 que ela deriva da classe base, você deve modificar o código.

Por exemplo, em um projeto da pasta de trabalho do Excel que se destina a.NET Framework 3.5, você pode ter um método auxiliar que executa algum trabalho em instâncias de gerado Sheetn classes 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ê redirecionar o projeto para o .NET Framework 4, você deve fazer uma das seguintes alterações em seu código:

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

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

    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 os controles do Windows Forms em documentos

Você deve adicionar um using (C#) ou Imports (Visual Basic) de instrução para o Microsoft.Office.Tools.Excel ou Microsoft.Office.Tools.Word namespace na parte superior de qualquer arquivo de código que usa o Controls propriedade para adicionar controles do Windows Forms para o documento ou planilha programaticamente.

Em projetos destinados a.NET Framework 3.5, os métodos que adicionar controles Windows Forms (como o AddButton método) são definidos na Microsoft.Office.Tools.Excel.ControlCollection e Microsoft.Office.Tools.Word.ControlCollection classes.

Em projetos destinados a .NET Framework 4, esses métodos são os métodos de extensão que estão disponíveis na Controls propriedade. Para usar esses métodos de extensão, o arquivo de código na qual você pode usar os métodos deve ter um using ou Imports a instrução para o Microsoft.Office.Tools.Excel ou Microsoft.Office.Tools.Word namespace. Essa instrução é gerada automaticamente em novos projetos que visam a .NET Framework 4. No entanto, esta instrução não é adicionada automaticamente em projetos destinados a.NET Framework 3.5, você deve adicioná-lo ao redirecionar o projeto.

For more information, see Adicionar controles a documentos do Office em tempo de execução.

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

Em projetos destinados a.NET Framework 3.5, eventos do Word, controles de conteúdo são manipulados pelo genérico EventHandler<TEventArgs> delegate. Em projetos destinados a .NET Framework 4, esses eventos são manipulados por outros representantes.

A tabela a seguir lista os eventos de controle de conteúdo do Word e delegados que estão associados com eles em projetos que visam a .NET Framework 4.

Event

Delegado para usar em .NET Framework 4 projetos

Added

ContentControlAddedEventHandler

ContentUpdating

ContentControlContentUpdatingEventHandler

Deleting

ContentControlDeletingEventHandler

Entering

ContentControlEnteringEventHandler

Exiting

ContentControlExitingEventHandler

StoreUpdating

ContentControlStoreUpdatingEventHandler

Atualizando o código que usa o OLEObject e Classes de OLEControl

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

Em projetos destinados a .NET Framework 4, essas classes foram substituídas pela Microsoft.Office.Tools.Excel.ControlSite e Microsoft.Office.Tools.Word.ControlSite interfaces. Você deve modificar o código que se refere a Microsoft.Office.Tools.Excel.OLEObject e Microsoft.Office.Tools.Word.OLEControl em vez disso, consulte Microsoft.Office.Tools.Excel.ControlSite e Microsoft.Office.Tools.Word.ControlSite. Diferente, por exemplo, os novos nomes, esses controles se comportam da mesma forma que eles fazem em projetos destinados a.NET Framework 3.5.

For more information, see Adicionar controles a documentos do Office em tempo de execução.

Atualizando o código que usa a propriedade Controls.Item(Object)

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

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

Para obter mais informações sobre o Controls a coleção de documentos e 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 destinados a.NET Framework 3.5, vários tipos de coleção na Visual Studio Tools for Office runtime derivam de CollectionBase de classe, como Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, e Microsoft.Office.Tools.Word.ControlCollection.

Em projetos destinados a .NET Framework 4, esses tipos de coleção são agora as 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

Arquitetura de marcas inteligentes

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

Obtendo Extended objetos a partir de objetos nativos do Office no nível do documento personalizações

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

Acesso global a objetos em projetos do Office

Histórico de alterações

Date

History

Motivo

Maio de 2010

Adicionada a seção sobre a remoção de Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute de projetos do Excel.

Aprimoramento de informações.