Compartilhar via


Limitações através de programação de itens de host e controles de host

Se aplica a

As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office.

Projetos de nível de documento

  • O Excel 2003

  • O Excel 2007

  • Word 2003

  • Word 2007

Projetos de nível de aplicativo

  • O Excel 2007

  • Word 2007

For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto.

Cada item de host e Controlarar de host foi projetado para se comportar como um Microsoft nativo correspondente Office Word ou o objeto do Microsoft Office Excel, com funcionalidades adicionais.No entanto, existem algumas diferenças fundamentais entre o comportamento de itens de host e controles de host e objetos do Office nativos em tempo de execução.

Para Geral informações sobre itens de host e controles de host, consulte Itens de host e Visão geral sobre controles de host.

Por meio de programação criando itens do host

Quando você programaticamente Criar ou abrir um documento, pasta de trabalho ou planilha em tempo de execução, o item não é um item de host.Em vez disso, o novo objeto é um objeto de Office nativo.Por exemplo, se você usar o método Add para criar um novo documento do Word em tempo de execução, será um objeto de nativo Microsoft.Office.Interop.Word.Document em vez de um item de host Microsoft.Office.Tools.Word.Document.Da mesma forma, quando você criar uma Novo planilha em tempo de execução usando o método Add , você obtém um objeto de nativo Microsoft.Office.Interop.Excel.Worksheet em vez de um item de host Microsoft.Office.Tools.Excel.Worksheet.

Em projetos de nível de documento, você não pode criar itens de host em tempo de execução.Itens de host podem ser criados somente em tempo de design em projetos de nível de documento.Para obter mais informações, consulte Item de host do documento, Item de host da pasta de trabalho e Item de host de planilha.

Iniciando no Visual Studio 2008 Serviço Pack 1 (SP1), você pode criar Microsoft.Office.Tools.Word.Document, Microsoft.Office.Tools.Excel.Workbookou Microsoft.Office.Tools.Excel.Worksheet host itens em tempo de execução em nível de aplicativo Adicionar-ins para o Excel 2007 e o Word 2007.For more information, see Estendendo os documentos do Word e Excel pastas de trabalho no nível de aplicativo Adicionar-ins em tempo de execução.

Por meio de programação criando controles de host

Por meio de programação você pode adicionar controles de host para um Microsoft.Office.Tools.Word.Document ou Microsoft.Office.Tools.Excel.Worksheet item de host em tempo de execução.For more information, see Adicionar controles a documentos do Office em tempo de execução.

Você não pode adicionar controles de host a um nativo Microsoft.Office.Interop.Word.Document ou Microsoft.Office.Interop.Excel.Worksheet.

Observação:

T ele seguintes controles de host não pode ser adicionado programaticamente a planilhas ou documentos: XmlMappedRange, XMLNode, and XMLNodes.

Noções básicas sobre diferenças de tipo entre itens de host, controles de host e objetos do Office nativo

Para cada item de host e o Controlarar de host, há um subjacente nativo Microsoft Office Word ou Microsoft Office Excel objeto.Você pode acessar o objeto subjacente usando a propriedade InnerObject do item de host ou Controlarar de host.No entanto, não é possível converter um objeto de Office nativo para o item de host correspondente ou Controlarar de host.Se você tentar converter um objeto do Office nativo no tipo de um item de host ou Controlarar de host, um InvalidCastException é lançada.

Há vários cenários onde as diferenças entre os tipos de itens de host e controles de host e os objetos de Office nativos subjacentes podem afetar seu código.

Controles de host de passagem para métodos e propriedades

No Word, você não pode passar um Controlarar de host para um método ou propriedade que requer um objeto nativo do Word como um parâmetro.Você deve use a propriedade InnerObject do Controlarar de host para retornar o objeto de Word nativo subjacente.Por exemplo, você pode passar um objeto Microsoft.Office.Interop.Word.Bookmark para um método passando a propriedade de InnerObject do Controlarar Microsoft.Office.Tools.Word.Bookmark host para o método.

Excel, há dois casos em que você use a propriedade InnerObject do Controlarar host:

  • Quando o método ou propriedade espera o objeto de Excel subjacente.

  • Quando o atributo de ExcelLocale1033Attribute é definido como false e o método ou propriedade espera um Object em vez do objeto de Excel subjacente.

O exemplo a seguir cria um Controlarar de Microsoft.Office.Tools.Excel.NamedRange e passa para o método AutoFill.O código usa a propriedade InnerObject do intervalo nomeado para retornar o Office subjacente Microsoft.Office.Interop.Excel.Range necessária para o método AutoFill.

Me.Range("A1").Value2 = "Monday"
Me.Range("A2").Value2 = "Tuesday"

Dim dayRange As Microsoft.Office.Tools.Excel.NamedRange = _
    Me.Controls.AddNamedRange(Me.Range("A1", "A7"), "dayRange")

Me.Range("A1", "A2").AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays)
this.Range["A1", missing].Value2 = "Monday";
this.Range["A2", missing].Value2 = "Tuesday";

Microsoft.Office.Tools.Excel.NamedRange dayRange 
    = this.Controls.AddNamedRange(this.Range["A1", "A7"], "dayRange");

this.Range["A1", "A2"].AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays);

Retornar tipos de métodos de Office nativo e propriedades

A maioria dos métodos e propriedades dos itens do host retornam o objeto de Office nativo subjacente na qual o item de host se baseia.Por exemplo, a propriedade de Parent de um Controlarar de host NamedRange no Excel retorna um objeto de Microsoft.Office.Interop.Excel.Worksheet em vez de um item de host Microsoft.Office.Tools.Excel.Worksheet.Da mesma forma, a propriedade de Parent de um Controlarar de host RichTextContentControl no Word retorna um objeto de Microsoft.Office.Interop.Word.Document em vez de um item de host Microsoft.Office.Tools.Word.Document.

Acessar coleções de controles de host

Ferramentas do Visual Studio para o Office não fornece coleções individuais para cada tipo de Controlarar de host.Por exemplo, não é possível enumerar cada Controlarar Microsoft.Office.Tools.Word.Bookmark no documento usando a coleção Microsoft.Office.Interop.Word.Bookmarks.A coleção de Microsoft.Office.Interop.Word.Bookmarks inclui Tudo indicadores no documento; Ele não faz distinção entre um Controlarar de Microsoft.Office.Tools.Word.Bookmark e um Microsoft.Office.Interop.Word.Bookmark.

Você pode usar Ambos propriedades de Worksheet.Controls ou Document.Controls para iterar em Tudo controles (os controles de host e controles Windows Forms) no documento ou planilha e, em seguida, olhe para itens que corresponde ao tipo do controle de host que você está interessado.O exemplo de código a seguir examina cada Controlarar em um documento do Word e determina se o Controlarar é um Microsoft.Office.Tools.Word.Bookmark.

Dim targetControl As Object
For Each targetControl In Me.Controls

    If TypeOf (targetControl) Is Microsoft.Office.Tools.Word.Bookmark Then
        Dim bookMark As Microsoft.Office.Tools.Word.Bookmark = _
            CType(targetControl, Microsoft.Office.Tools.Word.Bookmark)

        ' Do some work with the book mark here.
    End If
Next
foreach (object targetControl in this.Controls)
{
    Microsoft.Office.Tools.Word.Bookmark bookMark = 
        targetControl as Microsoft.Office.Tools.Word.Bookmark;

    if (bookMark != null)
    {
        // Do some work with the book mark here.
    }
}

Consulte também

Conceitos

Itens de host e Visão geral sobre controles de host

Item de host de planilha

Item de host da pasta de trabalho

Item de host do documento

Referência

Worksheet.Controls

Document.Controls

Outros recursos

Controles de host do Word

Controles de host do Excel

Date

History

Motivo

De 2008 de julho

Informações sobre a criação de itens de host usando-se suplementos em nível de aplicativo Adicionados.

Alteração de recurso do SP1.