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
Versão do Microsoft Office
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
No Visual Studio, crie um Excel 2007 Adicionar - projeto com o nome ExcelDynamicControls.
Na caixa de diálogo de Do novo projeto de , Selecionar Criar Diretório for solução.
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
No menu Project, clique em Add New Item.
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.
Na guia Controles da Faixa de Opções do Officede De caixa de ferramentas, arraste um controle de caixa de seleção para Grupo1.
Clique em CheckBox1 para Selecionar-lo.
Na janela Properties, Alterar as propriedades a seguir.
Propriedade
Value (Valor)
Nome
Button
Rótulo
Button
Adicionar uma segunda caixa de Marcar para Grupo1 e, em seguida, Alterar as propriedades a seguir.
Propriedade
Value (Valor)
Nome
NamedRange
Rótulo
NamedRange
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
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.
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); } }
Em Gerenciador de Soluções, Selecionar Ribbon1.cs ou Ribbon1.vb.
No menu Exibir, clique em Designer.
No Designer de Faixa de Opções, clique Duplo em NamedRange.
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); } }
No Designer de Faixa de Opções, clique Duplo em ListObject.
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); } }
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
Em Gerenciador de Soluções, Selecionar ThisAddIn.cs ou ThisAddIn.vb.
No menu Exibir, clique em Código.
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); } } }
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.
Pressionarionar F5 para executar seu projeto.
Selecionar qualquer célula na Sheet1.
Clique na guia de Adicionar-ins.
No grupo de Grupo1 de , clique em Botão.
Um botão aparece na célula Selecionadoda.
Selecionar uma célula diferente na Sheet1.
No grupo de Grupo1 de , clique em NamedRange.
Um intervalo nomeado é definido para a célula Selecionadoda.
Selecionar uma série de células na Sheet1.
No grupo de Grupo1 de , clique em ListObject.
Um objeto de lista é adicionado para as células Selecionadodas.
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:
- Para saber sobre como salvar controles a uma planilha, consulte O Excel Adicionar - no exemplo de controles dinâmicos.
Consulte também
Conceitos
Desenvolvimento de Adicionar-in de aplicativo-nível do Excel
Usando controles Windows Forms em planilhas do Excel
Outros recursos
Controles em documentos do Office
Date |
History |
Motivo |
---|---|---|
De 2008 de julho |
Tópico adicionado. |
Alteração de recurso do SP1. |