Compartilhar via


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

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.

Você pode adicionar controles a um documento do Microsoft Office Word e a pasta de trabalho do Microsoft Office Excel e também Remover-las, em tempo de execução.Controla o que você Adicionar para documentos em tempo de execução são chamados de controles dinâmicos .Iniciando no Visual Studio 2008 Serviço Pack 1 (SP1), você pode adicionar controles dinâmicos para documentos e pastas de trabalho usando suplementos em nível de aplicativo.

Este tópico fornece as seguintes informações:

  • Gerenciar controles em tempo de execução usando as coleções de controle

  • Adicionar host controles a documentos

  • Adicionar controles de Windows Forms a documentos

Gerenciando controles em tempo de execução usando as coleções de controle

Para adicionar, obter ou remover controles em tempo de execução, use métodos para auxiliar a Microsoft.Office.Tools.Excel.ControlCollection e Microsoft.Office.Tools.Word.ControlCollection classes.

A maneira que você acessar as coleções de Controlarar depende do tipo de projeto que você está desenvolvendo:

Adicionar Controles

A Microsoft.Office.Tools.Excel.ControlCollection e classes de Microsoft.Office.Tools.Word.ControlCollection Incluir métodos auxiliar que podem ser usados para adicionar controles de host e controles de Windows Forms ComComumComum a docComumentos e planilhas.Cada Nome do Método tem o Formatarar Add<Controlarar classe>, onde de classe de Controlarar de é o Nome de Classe do Controlarar que você deseja adicionar.Por exemplo, para adicionar um Controlarar NamedRange ao seu documento, use o método AddNamedRange.Para um Concluir lista de métodos auxiliares, verá Métodos de auxiliar para controles de host e Métodos de auxiliar para controles Windows Forms.

O exemplo de código a seguir adiciona um NamedRange a Sheet1 em um projeto de nível de documento para o Excel.

Dim range1 As Excel.Range = Globals.Sheet1.Range("A1", "D5")
Dim namedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
    Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource")
Excel.Range range1 = Globals.Sheet1.Range["A1", "D5"];
Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
    Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource");

Acessar e excluir controles

Você pode usar a propriedade de Controls de um Microsoft.Office.Tools.Excel.Worksheet ou Microsoft.Office.Tools.Word.Document para iterar em Tudo controles em seu documento, incluindo os controles adicionados em tempo de design.Controla o que você Adicionar em tempo de design também são chamado estático controla.

Você pode remover controles dinâmicos, chamando o método Delete do controle, ou chamando o método Remove de cada coleção Controls.O exemplo de código a seguir usa o método Remove para remover um NamedRange a Sheet1 em um projeto de nível de documento para o Excel.

Globals.Sheet1.Controls.Remove("ChartSource")
Globals.Sheet1.Controls.Remove("ChartSource");

Não é possível remover controles estáticos em tempo de execução.Se você tentar usar o método de Delete ou Remove para remover um Controlarar estático, um CannotRemoveControlException será lançada.

Observação:

Fazer não programaticamente Remover controles Em o Shutdown manipulador de eventos do documento.Os elementos de interface do usuário do documento não estão mais disponíveis quando o evento Shutdown é gerado.Se você quiser remover controles antes de fecha o documento, Adicionar seu código ao manipulador de eventos para outro evento, como Document.BeforeClose ou Document.BeforeSave para o Word, ou Workbook.BeforeCloseou Workbook.BeforeSave para o Excel.

Adicionando controles de host para documentos

Quando você adiciona por programação controles de host para documentos, você deve fornecer um nome que identifica exclusivamente o controle e você deve especificar onde adicionar o controle no documento.Para obter instruções específicas, consulte os tópicos a seguir:

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

Quando um documento é salvo e, em seguida, Fechada, todos os controles criados dinamicamente host são desconectados de seus eventos e eles percam a funcionalidade de ligação de dados.Você pode adicionar código à sua solução para recriar os controles de host quando o documento for reaberto.For more information, see Persistência controles dinâmicos em documentos do Office.

Observação:

Métodos auxiliares não são fornecidos para o seguinte Host controles, como o Se controles não pode ser adicionado programaticamente a documentos: XmlMappedRange, XMLNode, and XMLNodes.

Adicionando controles de formulários do Windows para documentos

Quando você programaticamente Adicionar um Controlarar Windows Forms em um documento, você deve fornecer o local do Controlarar e um nome que identifica exclusivamente o Controlarar.Ferramentas do Visual Studio para o Office fornece métodos de auxiliar para cada Controlarar.Esses métodos são sobrecarregados para que você pode passar um intervalo ou coordenadas específicas para a localidade do Controlarar. Para obter instruções específicas, consulte Como: Adicionar controles de Windows Forms a documentos do Office.

Quando um documento é salvo e, em seguida, Fechada, todos os controles Windows Forms criados dinamicamente são removidos de o documento.Você pode adicionar código à sua solução para recriar os controles quando o documento for reaberto.Se você criar controles de Windows Forms dinâmicos usando um nível de aplicativo Adicionar - in, os wrappers do ActiveX para os controles são deixados no documento.For more information, see Persistência controles dinâmicos em documentos do Office.

Observação:

Controles Windows Forms não podem ser programaticamente Adicionado para documentos protegidos por.Se você programaticamente desproteger um Documento do Word ou planilha do Excel para adicionar um Controlarar, você deve Gravar código adicional para remover o wrapper do ActiveX do Controlarar quando o documento é Fechada.Wrapper do ActiveX do Controlarar não será excluído automaticamente de documentos protegidos.

Adicionando controles Personalizars

Se você quiser adicionar um System.Windows.Forms.Control não dá suporte os métodos de auxiliares disponível (por exemplo, um Controlarar de usuário Personalizar), use os seguintes métodos:

Para adicionar o Controlarar, passe a System.Windows.Forms.Control, um local para o Controlarar e um nome que identifica exclusivamente o Controlarar para o método AddControl.Para que o Excel, esse método retorna um OLEObject.Para o Word, esse método retorna um OLEControl.Esses objetos Definirm como o Controlarar interage com a planilha ou documento.

O exemplo de código a seguir demonstra como usar o método AddControl(Control, Range, String) para adicionar dinamicamente um Controlarar de usuário Personalizar a uma planilha.Neste exemplo, o Controlarar de usuário é chamado UserControl1, e o Range é chamado range1.Este exemplo pressupõe que ele está sendo executado de uma das classes n Sheet em um projeto de nível de documento para o Excel.

Dim customControl As New UserControl1()

Dim dynamicControl As Microsoft.Office.Tools.Excel.OLEObject = _
    Me.Controls.AddControl(customControl, range1, "dynamic")
UserControl1 customControl = new UserControl1();

Microsoft.Office.Tools.Excel.OLEObject dynamicControl =
    this.Controls.AddControl(customControl, range1, "dynamic");

Usando membros de controles Personalizars

Depois de usar um dos métodos AddControl para adicionar um Controlarar a uma planilha ou documento, você agora tem dois objetos de outro Controlarar:

Muitas propriedades e métodos são compartilhados entre esses controles.É importante que você Acessar esses métodos e propriedades pelo Controlarar apropriado:

Se você acessar um método compartilhado ou uma propriedade da System.Windows.Forms.Control, ele pode falhar sem aviso ou de notificação ou ele pode produzir resultados inválidos.Sempre usar métodos ou propriedades do OLEObject ou OLEControl, a menos que o método ou propriedade necessária não esteja disponível; somente então deve você Referência o System.Windows.Forms.Control.

Por exemplo, tanto a clAmbosse de OLEObject e a clAmbosse System.Windows.Forms.Control possuem uma propriedade Top.Para obter ou definir a distância entre a parte superior do Controlarar e o início do documento, use a propriedade Top a OLEObject, não a propriedade Top a System.Windows.Forms.Control.

' Property is set in relation to the document.
dynamicControl.Top = 100

' Property is set in relation to the container control.
customControl.Top = 100
// Property is set in relation to the document.
dynamicControl.Top = 100;

// Property is set in relation to the container control.
customControl.Top = 100;

Consulte também

Tarefas

Como: Adicionar controles de ListObject a planilhas

Como: Adicionar controles NamedRange a planilhas

Como: Adicionar controles de gráfico a planilhas

Como: Adicionar controles de conteúdo a documentos do Word

Como: Adicionar indicador controles a documentos do Word

Como: Adicionar controles de Windows Forms a documentos do Office

Conceitos

Persistência controles dinâmicos em documentos do Office

Métodos de auxiliar para controles de host

Métodos de auxiliar para controles Windows Forms

Controles de formulários do Windows em Visão geral de documentos do Office

Referência

ControlCollection.AddControl

ControlCollection.AddControl

ControlCollection.Remove

ControlCollection.Remove

Outros recursos

Controles em documentos do Office

Controles de host do Excel

Controles de host do Word

Date

History

Motivo

De 2008 de julho

Adicionados informações sobre como adicionar controles aos documentos usando suplementos em nível de aplicativo.

Alteração de recurso do SP1.