Atualizar projetos do Excel e Word migrados para o .NET Framework 4 ou o .NET Framework 4.5Update Excel and Word projects that You migrate to the .NET Framework 4 or the .NET Framework 4.5

Se você tiver um projeto do Excel ou Word que usa qualquer um dos seguintes recursos, você deve modificar seu código se a estrutura de destino for alterada para o .NET Framework 4.NET Framework 4 ou posterior:If you have an Excel or Word project that uses any of the following features, you must modify your code if the target framework is changed to the .NET Framework 4.NET Framework 4 or later:

Remova o atributo ExcelLocale1033 dos projetos do ExcelRemove the ExcelLocale1033 attribute from Excel projects

O Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute foi removido da parte do Visual Studio 2010 Tools para Office runtime que é usado para soluções que se destinam a .NET Framework 4.NET Framework 4 ou posterior.The Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute has been removed from the portion of the Visual Studio 2010 Tools for Office runtime that is used for solutions that target the .NET Framework 4.NET Framework 4 or later. O common language runtime (CLR) no .NET Framework 4.NET Framework 4 e posteriormente sempre passa localidade 1033 ID para o modelo de objeto do Excel e você não pode usar esse atributo para desabilitar esse comportamento.The common language runtime (CLR) in the .NET Framework 4.NET Framework 4 and later always passes locale ID 1033 to the Excel object model, and you can no longer use this attribute to disable this behavior. Para obter mais informações, consulte globalização e localização de soluções do Excel.For more information, see Globalization and localization of Excel solutions.

Para remover o ExcelLocale1033AttributeTo remove the ExcelLocale1033Attribute

  1. Com o projeto aberto no Visual Studio, abra Gerenciador de soluções.With the project open in Visual Studio, open Solution Explorer.

  2. Sob o propriedades nó (c#) ou o meu projeto nó (para Visual Basic), clique duas vezes o arquivo de código AssemblyInfo para abri-lo no editor de códigos.Under the Properties node (for C#) or the My Project node (for Visual Basic), double-click the AssemblyInfo code file to open it in the code editor.

    Note

    Em projetos do Visual Basic, você deve clicar no Mostrar todos os arquivos no botão Solution Explorer para ver o arquivo de código AssemblyInfo.In Visual Basic projects, you must click the Show All Files button in Solution Explorer to see the AssemblyInfo code file.

  3. Localize o Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute e removê-lo do arquivo ou comente-o.Locate the Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute and either remove it from the file or comment it out.

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

Remover uma referência à classe ExcelLocal1033ProxyRemove a reference to the ExcelLocal1033Proxy class

Projetos que foram criados usando o Microsoft Visual Studio 2005 Tools para o Microsoft Office System instanciar o Excel Application objeto usando o Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy classe.Projects that were created by using Microsoft Visual Studio 2005 Tools for the Microsoft Office System instantiate the Excel Application object by using the Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy class. Essa classe foi removida da parte do Visual Studio 2010 Tools para Office runtime que usou para soluções que têm como destino o .NET Framework 4.NET Framework 4 ou posterior.This class has been removed from the portion of the Visual Studio 2010 Tools for Office runtime that's used for solutions that target the .NET Framework 4.NET Framework 4 or later. Portanto, você deve remover ou comentar a linha de código que faz referência a essa classe.Therefore, you must remove or comment out the line of code that references this class.

Para remover a referência à classe ExcelLocal1033ProxyTo remove the reference to the ExcelLocal1033Proxy class

  1. Abra o projeto no Visual Studio e abra Gerenciador de soluções.Open the project in Visual Studio, and then open Solution Explorer.

  2. Em Solution Explorer, abra o menu de atalho para ThisAddin.cs (para c#) ou ThisAddIn (para Visual Basic) e, em seguida, escolha Exibir código.In Solution Explorer, open the shortcut menu for ThisAddin.cs (for C#) or ThisAddin.vb (for Visual Basic), and then choose View Code.

  3. No Editor de códigos, no VSTO generated code região, remover ou comentar a seguinte linha de código.In the Code Editor, in the VSTO generated code region, remove or comment out the following line of code.

    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);  
    

Atualizar o código que usa os métodos GetVstoObject e HasVstoObjectUpdate code that uses the GetVstoObject and HasVstoObject methods

Em projetos direcionados ao .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 nativo em seu projeto: Document, Workbook, Worksheet, ou ListObject.In projects that target the .NET Framework 3.5, the GetVstoObject or HasVstoObject methods are available as extension methods on one of the following native objects in your project: Document, Workbook, Worksheet, or ListObject. Quando você chamar esses métodos, você não precisa passar um parâmetro.When you call these methods, you do not need to pass a parameter. O exemplo de código a seguir demonstra como usar o método GetVstoObject em um palavra VSTO suplemento que tem como alvo o .NET Framework 3.5.The following code example demonstrates how to use the GetVstoObject method in a Word VSTO Add-in that targets the .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 direcionados a .NET Framework 4.NET Framework 4 ou posterior, você deve modificar seu código para acessar esses métodos em uma das seguintes maneiras:In projects that target the .NET Framework 4.NET Framework 4 or later, you must modify your code to access these methods in one of the following ways:

  • Você ainda pode acessar esses métodos como métodos de extensão em Document, Workbook, Worksheet, ou ListObject objetos.You can still access these methods as extension methods on Document, Workbook, Worksheet, or ListObject objects. No entanto, você deve passar o objeto retornado por agora o Globals.Factory propriedade para esses métodos.However, you must now pass the object returned by the Globals.Factory property to these methods.

    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 que é retornado pelo Globals.Factory propriedade.You can alternatively access these methods on the object that is returned by the Globals.Factory property. Quando você acessa esses métodos dessa forma, você deve passar o objeto nativo que você deseja estender para o método.When you access these methods in this way, you must pass the native object that you want to extend to the method.

    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 documentos de estender o Word e pastas de trabalho do Excel no suplemento do VSTO em tempo de execução.For more information, see Extend Word documents and Excel workbooks in VSTO Add-ins at runtime.

Atualizar o código que usa instâncias das classes geradas no nível de documentoUpdate code that uses instances of the generated classes in document-level projects

Em projetos de nível de documento que o .NET Framework 3.5 de destino, as classes geradas nos projetos derivam as seguintes classes no Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime:In document-level projects that target the .NET Framework 3.5, the generated classes in the projects derive from the following classes in the Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime:

  • ThisDocument: DocumentThisDocument: Document

  • ThisWorkbook: WorkbookThisWorkbook: Workbook

  • Sheet n: WorksheetSheet n: Worksheet

  • Chart n: ChartSheetChart n: ChartSheet

    Em projetos direcionados a .NET Framework 4.NET Framework 4 ou posterior, os tipos no Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime listadas acima são interfaces, em vez de classes.In projects that target the .NET Framework 4.NET Framework 4 or later, the types in the Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime listed above are interfaces, instead of classes. Classes gerado em projetos direcionados a .NET Framework 4.NET Framework 4 ou posterior derivam as seguintes classes de novo no Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime:The generated classes in projects that target the .NET Framework 4.NET Framework 4 or later derive from the following new classes in the Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime:

  • ThisDocument: DocumentBaseThisDocument: DocumentBase

  • ThisWorkbook: WorkbookBaseThisWorkbook: WorkbookBase

  • Sheet n: WorksheetBaseSheet n: WorksheetBase

  • Chart n: ChartSheetBaseChart n: ChartSheetBase

    Se o código em seu projeto faz referência a uma instância de uma das classes geradas como a classe base que deriva de, você deve modificar o código.If code in your project refers to an instance of one of the generated classes as the base class that it derives from, you must modify the code.

    Por exemplo, em um projeto de pasta de trabalho do Excel que tem como alvo o .NET Framework 3.5, você pode ter um método auxiliar que executa algum trabalho em instâncias do gerado Sheet n classes no seu projeto.For example, in an Excel Workbook project that targets the .NET Framework 3.5, you might have a helper method that performs some work on instances of the generated Sheetn classes in your project.

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.NET Framework 4 ou posterior, você deve fazer uma das seguintes alterações no seu código:If you retarget the project to the .NET Framework 4.NET Framework 4 or later, you must make one of the following changes to your code:

  • Modificar qualquer código que chama o DoSomethingToSheet método para passar o Base propriedade de um WorksheetBase objeto em seu projeto.Modify any code that calls the DoSomethingToSheet method to pass the Base property of a WorksheetBase object in your project. Essa propriedade retorna um Worksheet objeto.This property returns a Worksheet object.

    DoSomethingToSheet(Globals.Sheet1.Base)  
    
    DoSomethingToSheet(Globals.Sheet1.Base);  
    
  • Modificar o DoSomethingToSheet parâmetro do método esperar um WorksheetBase do objeto em vez disso.Modify the DoSomethingToSheet method parameter to expect a WorksheetBase object instead.

    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.  
    }  
    

Atualizar o código que usa os controles de Windows Forms em documentosUpdate code that uses Windows Forms controls on documents

Você deve adicionar um usando (c#) ou Imports declaração (Visual Basic) para o Microsoft.Office.Tools.Excel ou Microsoft.Office.Tools.Word namespace para a parte superior de qualquer arquivo de código que usa a propriedade de controles para adicionar o Windows Forms controles para o documento ou a planilha programaticamente.You must add a using (C#) or Imports (Visual Basic) statement for the Microsoft.Office.Tools.Excel or Microsoft.Office.Tools.Word namespace to the top of any code file that uses the Controls property to add Windows Forms controls to the document or worksheet programmatically.

Em projetos direcionados ao .NET Framework 3.5, os métodos que adicionar controles de formulários do Windows (como o AddButton método) são definidos no ControlCollection e ControlCollection classes.In projects that target the .NET Framework 3.5, the methods that add Windows Forms controls (such as the AddButton method) are defined in the ControlCollection and ControlCollection classes.

Em projetos direcionados a .NET Framework 4.NET Framework 4 ou versões posteriores, esses métodos são os métodos de extensão que estão disponíveis na propriedade de controles.In projects that target the .NET Framework 4.NET Framework 4 or later, these methods are extension methods that are available on the Controls property. Para usar esses métodos de extensão, o arquivo de código que você pode usar os métodos deve ter uma usando ou Imports instrução para o Microsoft.Office.Tools.Excel ou Microsoft.Office.Tools.Word namespace.To use these extension methods, the code file in which you use the methods must have a using or Imports statement for the Microsoft.Office.Tools.Excel or Microsoft.Office.Tools.Word namespace. Essa instrução é gerada automaticamente em novos projetos que se destinam a .NET Framework 4.NET Framework 4 ou posterior.This statement is generated automatically in new projects that target the .NET Framework 4.NET Framework 4 or later. No entanto, essa instrução não é adicionada automaticamente em projetos direcionados ao .NET Framework 3.5, você deve adicioná-lo ao redirecionar o projeto.However, this statement is not added automatically in projects that target the .NET Framework 3.5, so you must add it when you retarget the project.

Para obter mais informações, consulte adicionar controles a documentos do Office em tempo de execução.For more information, see Add controls to Office documents at runtime.

Atualizar o código que trata os eventos de controle de conteúdo do WordUpdate code that handles Word content control events

Em projetos direcionados ao .NET Framework 3.5, eventos de controles de conteúdo do Word são manipulados pelo genérica EventHandler<TEventArgs> delegate.In projects that target the .NET Framework 3.5, events of Word content controls are handled by the generic EventHandler<TEventArgs> delegate. Em projetos direcionados a .NET Framework 4.NET Framework 4 ou posterior, esses eventos são tratados por outros delegados.In projects that target the .NET Framework 4.NET Framework 4 or later, these events are handled by other delegates.

A tabela a seguir lista os eventos de controle de conteúdo do Word e delegados que estão associados com eles em projetos direcionados a .NET Framework 4.NET Framework 4 ou posterior.The following table lists the Word content control events and the delegates that are associated with them in projects that target the .NET Framework 4.NET Framework 4 or later.

eventoEvent Delegado a ser usado em .NET Framework 4.NET Framework 4 e projetos posterioresDelegate to use in .NET Framework 4.NET Framework 4 and later projects
Added ContentControlAddedEventHandler
ContentUpdating ContentControlContentUpdatingEventHandler
Deleting ContentControlDeletingEventHandler
Entering ContentControlEnteringEventHandler
Exiting ContentControlExitingEventHandler
StoreUpdating ContentControlStoreUpdatingEventHandler

Atualizar o código que usa as classes OLEObject e OLEControlUpdate code that uses the OLEObject and OLEControl classes

Em projetos direcionados ao .NET Framework 3.5, você pode adicionar controles personalizados (por exemplo, controles de usuário do Windows Forms) para um documento ou a planilha usando o Microsoft.Office.Tools.Excel.OLEObject e Microsoft.Office.Tools.Word.OLEControl classes.In projects that target the .NET Framework 3.5, you can add custom controls (such as Windows Forms user controls) to a document or worksheet by using the Microsoft.Office.Tools.Excel.OLEObject and Microsoft.Office.Tools.Word.OLEControl classes.

Em projetos direcionados a .NET Framework 4.NET Framework 4 ou posterior, essas classes foram substituídas pelo ControlSite e ControlSite interfaces.In projects that target the .NET Framework 4.NET Framework 4 or later, these classes have been replaced by the ControlSite and ControlSite interfaces. Você deve modificar o código que se refere a Microsoft.Office.Tools.Excel.OLEObject e Microsoft.Office.Tools.Word.OLEControl para referir-se em vez disso, para ControlSite e ControlSite.You must modify code that refers to Microsoft.Office.Tools.Excel.OLEObject and Microsoft.Office.Tools.Word.OLEControl to instead refer to ControlSite and ControlSite. Diferente de novos nomes, esses controles se comportam da mesma maneira que em projetos direcionados ao .NET Framework 3.5.Other than the new names, these controls behave the same way that they do in projects that target the .NET Framework 3.5.

Para obter mais informações, consulte adicionar controles a documentos do Office em tempo de execução.For more information, see Add controls to Office documents at runtime.

Atualizar o código que usa a propriedade Controls.Item(Object)Update code that uses the Controls.Item(Object) property

Em projetos direcionados ao .NET Framework 3.5, você pode usar a propriedade Item(Object) a 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.In projects that target the .NET Framework 3.5, you can use the Item(Object) property of the Microsoft.Office.Tools.Word.Document.Controls or Microsoft.Office.Tools.Excel.Worksheet.Controls collection to determine whether a document or worksheet has a specified control.

Em projetos direcionados a .NET Framework 4.NET Framework 4 ou posterior, a propriedade Item(Object) foi removida dessas coleções.In projects that target the .NET Framework 4.NET Framework 4 or later, the Item(Object) property has been removed from these collections. Para determinar se um documento ou a planilha contém um controle especificado, use o método Contains(System.Object) o Controls ou Controls coleção em vez disso.To determine whether a document or worksheet contains a specified control, use the Contains(System.Object) method of the Controls or Controls collection instead.

Para obter mais informações sobre a coleção de controles de planilhas e documentos, consulte adicionar controles a documentos do Office em tempo de execução.For more information about the Controls collection of documents and worksheets, see Add controls to Office documents at runtime.

Atualizar o código que usa coleções que derivam de CollectionBaseUpdate code that uses collections that derive from CollectionBase

Em projetos direcionados ao .NET Framework 3.5, tipos de coleção várias no Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime derivam o CollectionBase classe, como Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, e Microsoft.Office.Tools.Word.ControlCollection.In projects that target the .NET Framework 3.5, several collection types in the Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime derive from the CollectionBase class, such as Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, and Microsoft.Office.Tools.Word.ControlCollection.

Em projetos direcionados a .NET Framework 4.NET Framework 4 ou posterior, esses tipos de coleção agora são interfaces que não derivam CollectionBase.In projects that target the .NET Framework 4.NET Framework 4 or later, these collection types are now interfaces that do not derive from CollectionBase. Alguns membros não estão mais disponíveis nesses tipos de coleção, como Capacity, List, e InnerList.Some members are no longer available on these collection types, such as Capacity, List, and InnerList.

Consulte tambémSee also

Migrar as soluções do Office para o .NET Framework 4 ou posterior Migrate Office solutions to the .NET Framework 4 or later
Controles de conteúdo Content controls
Estender a documentos do Word e pastas de trabalho do Excel no suplemento do VSTO em tempo de execução Extend Word documents and Excel workbooks in VSTO Add-ins at runtime
Adicionar controles a documentos do Office em tempo de execução Add controls to Office documents at runtime
Acesso global a objetos em projetos do OfficeGlobal access to objects in Office projects