Partilhar via


Demonstra Passo a passo: Adicionar controles a uma planilha em tempo de execução em um projeto de nível de aplicativo

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.

Tipo de Projeto

  • Projetos de nível de aplicativo

Versão do Microsoft Office

  • O Excel 2007

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

Você pode adicionar controles a qualquer Abrir planilha usando um suplemento do Excel 2007.Esta explicação passo a passo demonstra como usar a Faixa de Opções para permitir que os usuários Adicionar um Button, um NamedRangee um ListObject a uma planilha.

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

Essa explicação passo a passo ilustra as seguintes tarefas:

  • Fornece uma interface de usuário (UI) para adicionar controles para a planilha.

  • Adicionar controles para a planilha.

  • Remover controles de a planilha.

Observação:

Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio.

Pré-requisitos

Para completar este passo a passo, são necessários os seguintes componentes:

  • Ferramentas do Visual Studio para o Office (um componente opcional do O Visual Studio 2008 Professional e Visual Studio Team System).

  • O Visual Studio 2008 Serviço Pack 1 (SP1).

  • Microsoft Office Excel 2007.

Criar um novo Excel Adicionar - projeto

Iniciar Criando um projeto de suplemento do Excel 2007.

Para criar um novo Excel Adicionar - projeto

  1. No Visual Studio, crie um Excel 2007 Adicionar - projeto com o nome ExcelDynamicControls.

  2. Na caixa de diálogo de Do novo projeto de , Selecionar Criar Diretório for solução.

  3. Salvar o projeto em qualquer local.

    For more information, see Como: Criar o Visual Studio Tools para projetos do Office.

Fornecer uma interface de usuário para adicionar controles a uma planilha

Adicionar uma guia Personalizar à Faixa de Opções Excel 2007.Os usuários podem selecionar caixas de Marcar na guia para adicionar controles a uma planilha.

Para fornecer uma interface do usuário para adicionar controles a uma planilha

  1. No menu Project, clique em Add New Item.

  2. No Adicionar Novo Item caixa de diálogo, Selecionar **Da Faixa de Opções (Designer Visual)**e, em seguida, clique em Adicionar.

    Um arquivo denominado Ribbon1.cs ou Ribbon1.vb abre no Designer da Faixa de Opções e exibe uma Guiaulação padrão e o AAgruparar.

  3. Na guia Controles da Faixa de Opções do Officede De caixa de ferramentas, arraste um controle de caixa de seleção para Grupo1.

  4. Clique em CheckBox1 para Selecionar-lo.

  5. Na janela Properties, Alterar as propriedades a seguir.

    Propriedade

    Value (Valor)

    Nome

    Button

    Rótulo

    Button

  6. Adicionar uma segunda caixa de Marcar para Grupo1 e, em seguida, Alterar as propriedades a seguir.

    Propriedade

    Value (Valor)

    Nome

    NamedRange

    Rótulo

    NamedRange

  7. Adicionar uma terceira caixa de Marcar para Grupo1 e, em seguida, Alterar as propriedades a seguir.

    Propriedade

    Value (Valor)

    Nome

    ListObject

    Rótulo

    ListObject

Adicionando controles para a planilha

Controles gerenciados só podem ser adicionados aos itens de host, que atuam como recipientes.Como suplemento projetos funciona com qualquer Abrir pasta de trabalho, o suplemento converte a planilha em um item de host ou recebe um item de host existente, antes de adicionar o Controlarar.Adicionar código para os manipuladores de eventos Clique de cada Controlarar para gerar um item de host Worksheet que se baseia a planilha aberta.Em seguida, Adicionar um Button, um NamedRangee um ListObject na seleção atual na planilha.

Para adicionar controles a uma planilha

  1. No Designer de Faixa de Opções, clique Duplo em Botão.

    O manipulador de eventos Click de Botão Caixa de Marcar abre no Editor de código.

  2. Substituir o manipulador de eventos de Button_Click com o código a seguir.

    Esse código usa o método GetVstoObject para obter um item de host que representa a Primeiro planilha na pasta de trabalho e, em seguida, adiciona um Controlarar de Button para a célula Selecionadoda no momento.

    Private Sub Button_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
            Handles Button.Click
        Dim worksheet = CType(Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets(1),  _
            Excel.Worksheet).GetVstoObject()
        Dim buttonName As String = "MyButton"
    
        If CType(sender, RibbonCheckBox).Checked Then
            Dim selection As Excel.Range = Globals.ThisAddIn.Application.Selection
            If Not (selection Is Nothing) Then
                Dim button As New Microsoft.Office.Tools.Excel.Controls.Button()
                worksheet.Controls.AddControl(button, selection, buttonName)
            End If
        Else
            worksheet.Controls.Remove(buttonName)
        End If
    End Sub
    
    private void Button_Click(object sender, RibbonControlEventArgs e)
    {
        Worksheet worksheet = ((Excel.Worksheet)
            Globals.ThisAddIn.Application.
                ActiveWorkbook.Worksheets[1]).GetVstoObject();
        string buttonName = "MyButton";
    
        if (((RibbonCheckBox)sender).Checked)
        {
            Excel.Range selection =
                Globals.ThisAddIn.Application.Selection as Excel.Range;
            if (selection != null)
            {
                Microsoft.Office.Tools.Excel.Controls.Button button =
                    new Microsoft.Office.Tools.Excel.Controls.Button();
                worksheet.Controls.AddControl(button, selection, buttonName);
            }
        }
        else
        {
            worksheet.Controls.Remove(buttonName);
        }
    }
    
  3. Em Gerenciador de Soluções, Selecionar Ribbon1.cs ou Ribbon1.vb.

  4. No menu Exibir, clique em Designer.

  5. No Designer de Faixa de Opções, clique Duplo em NamedRange.

  6. Substituir o manipulador de eventos de NamedRange_Click com o código a seguir.

    Esse código usa o método GetVstoObject para obter um item de host que representa a Primeiro planilha na pasta de trabalho e, em seguida, define um Controlarar de NamedRange para a célula Selecionadoda no momento ou as células.

    Private Sub NamedRange_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
            Handles NamedRange.Click
        Dim worksheet = CType(Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets(1),  _
            Excel.Worksheet).GetVstoObject()
        Dim rangeName As String = "MyNamedRange"
    
        If CType(sender, RibbonCheckBox).Checked Then
            Dim selection As Excel.Range = Globals.ThisAddIn.Application.Selection
            If Not (selection Is Nothing) Then
                Dim namedRange As NamedRange = _
                    worksheet.Controls.AddNamedRange(selection, rangeName)
            End If
        Else
            worksheet.Controls.Remove(rangeName)
        End If
    End Sub
    
    private void NamedRange_Click(object sender, RibbonControlEventArgs e)
    {
        Worksheet worksheet =
              ((Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.
                  Worksheets[1]).GetVstoObject();
        string Name = "MyNamedRange";
    
        if (((RibbonCheckBox)sender).Checked)
        {
            Excel.Range selection =
                Globals.ThisAddIn.Application.Selection as Excel.Range;
            if (selection != null)
            {
                worksheet.Controls.AddNamedRange(selection, Name);
            }
        }
        else
        {
            worksheet.Controls.Remove(Name);
        }
    }
    
  7. No Designer de Faixa de Opções, clique Duplo em ListObject.

  8. Substituir o manipulador de eventos de ListObject_Click com o código a seguir.

    Esse código usa o método GetVstoObject para obter um item de host que representa a Primeiro planilha na pasta de trabalho e, em seguida, define um ListObject para a célula Selecionadoda no momento ou células.

    Private Sub ListObject_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
            Handles ListObject.Click
        Dim worksheet = CType(Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets(1),  _
            Excel.Worksheet).GetVstoObject()
        Dim listObjectName As String = "MyListObject"
    
        If CType(sender, RibbonCheckBox).Checked Then
            Dim selection As Excel.Range = _
                Globals.ThisAddIn.Application.Selection
            If Not (selection Is Nothing) Then
                worksheet.Controls.AddListObject(selection, listObjectName)
            End If
        Else
            worksheet.Controls.Remove(listObjectName)
        End If
    End Sub
    
    private void ListObject_Click(object sender, RibbonControlEventArgs e)
    {
        Worksheet worksheet =
              ((Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.
                  Worksheets[1]).GetVstoObject();
        string listObjectName = "MyListObject";
    
        if (((RibbonCheckBox)sender).Checked)
        {
            Excel.Range selection =
                Globals.ThisAddIn.Application.Selection as Excel.Range;
            if (selection != null)
            {
                worksheet.Controls.AddListObject(selection, listObjectName);
            }
        }
        else
        {
            worksheet.Controls.Remove(listObjectName);
        }
    }
    
  9. Adicionar o seguinte usando instruções para a parte superior do arquivo de código da Faixa de Opções.

    Imports Excel = Microsoft.Office.Interop.Excel
    Imports Microsoft.Office.Tools.Excel
    Imports Microsoft.Office.Tools.Excel.Extensions
    
    using Excel = Microsoft.Office.Interop.Excel;
    using Microsoft.Office.Tools.Excel;
    using Microsoft.Office.Tools.Excel.Extensions;
    

Remover controles de a planilha

Controles não são persistentes quando a planilha é salvo e fechada.Por meio de programação você deve remover todos os controles Windows Forms gerados antes da planilha é salva ou apenas uma estrutura de tópicos do controle aparecerá quando a pasta de trabalho é aberta novamente.Adicionar código para o evento WorkbookBeforeSave que remove controles Windows Forms a coleção de controles de item de host gerado.For more information, see Persistência controles dinâmicos em documentos do Office.

Para remover controles de planilha

  1. Em Gerenciador de Soluções, Selecionar ThisAddIn.cs ou ThisAddIn.vb.

  2. No menu Exibir, clique em Código.

  3. Adicione o seguinte método à classe ThisAddIn.Este código obtém a Primeiro planilha na pasta de trabalho e, em seguida, usa o método de HasVstoObject para Marcar se a planilha tem um objeto de planilha gerado Ferramentas do Visual Studio para o Office.Se o objeto de planilha gerado tiver controles, o código obtém esse objeto de planilha e itera através da coleção de controle, removendo os controles.

    Sub Application_WorkbookBeforeSave _
        (ByVal workbook As Microsoft.Office.Interop.Excel.Workbook, _
         ByVal SaveAsUI As Boolean, ByRef Cancel As Boolean) _
         Handles Application.WorkbookBeforeSave
    
        Dim worksheet As Excel.Worksheet = workbook.Worksheets(1)
        If worksheet.HasVstoObject() And worksheet.GetVstoObject().Controls.Count > 0 Then
            Dim vstoWorksheet As Worksheet = worksheet.GetVstoObject()
    
            While vstoWorksheet.Controls.Count > 0 
                Dim vstoControl As Object = vstoWorksheet.Controls(0) 
                vstoWorksheet.Controls.Remove(vstoControl) 
            End While
        End If
    End Sub
    
    void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook workbook, 
        bool SaveAsUI, ref bool Cancel)
    {
        Excel.Worksheet worksheet =
            workbook.Worksheets[1] as Excel.Worksheet;
    
        if (worksheet.HasVstoObject() && worksheet.GetVstoObject().Controls.Count > 0)
        {
            Worksheet vstoWorksheet = worksheet.GetVstoObject();
    
            while (vstoWorksheet.Controls.Count > 0)
            {
                object vstoControl = vstoWorksheet.Controls[0];
                vstoWorksheet.Controls.Remove(vstoControl);
            }
    
        }
    }
    
  4. Em C#, você deve Criar um manipulador de eventos para o evento WorkbookBeforeSave.Você pode colocar esse código no método ThisAddIn_Startup.Para obter mais informações sobre manipuladores de evento, consulte Como: Criar manipuladores de eventos no Visual Studio Tools for Office.Substituir o método de ThisAddIn_Startup com o código a seguir.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        this.Application.WorkbookBeforeSave += 
            new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler
                (Application_WorkbookBeforeSave);
    }
    

Testando a solução

Adicionar controles a uma planilha selecionando-os em uma guia Personalizar da Faixa de Opções.Quando você salvar a planilha, esses controles são removidos.

Para testar a solução.

  1. Pressionarionar F5 para executar seu projeto.

  2. Selecionar qualquer célula na Sheet1.

  3. Clique na guia de Adicionar-ins.

  4. No grupo de Grupo1 de , clique em Botão.

    Um botão aparece na célula Selecionadoda.

  5. Selecionar uma célula diferente na Sheet1.

  6. No grupo de Grupo1 de , clique em NamedRange.

    Um intervalo nomeado é definido para a célula Selecionadoda.

  7. Selecionar uma série de células na Sheet1.

  8. No grupo de Grupo1 de , clique em ListObject.

    Um objeto de lista é adicionado para as células Selecionadodas.

  9. Salvar a planilha.

    Os controles adicionados ao Plan1 não Aparecerr.

Próximas etapas

Você pode saber mais sobre os controles no Excel 2007 Adicionar - em projetos deste tópico:

Consulte também

Conceitos

Desenvolvimento de Adicionar-in de aplicativo-nível do Excel

Usando controles Windows Forms em planilhas do Excel

Controlarar NamedRange

Controlarar de ListObject

Outros recursos

Controles em documentos do Office

Controles de host do Excel

Date

History

Motivo

De 2008 de julho

Tópico adicionado.

Alteração de recurso do SP1.