Demonstra Passo a passo: Chamar o código em um aplicativo-nível Adicionar - in do VBA
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. |
Esta explicação passo a passo demonstra como expor um objeto em um nível de aplicativo Adicionar - na Outro soluções do Microsoft Office, incluindo Visual Basic para Applications (VBA) e COM Adicionar-ins.
Embora esta explicação passo a passo Use Excel especificamente, os conceitos demonstrados pelo explicação passo a passo são aplicáveis a qualquer Adicionar - projeto fornecido pelo Ferramentas do Visual Studio para o Office.
Essa explicação passo a passo ilustra as seguintes tarefas:
Definir uma classe que pode ser exposta a Outro soluções do Office.
Expor a classe Outro soluções do Office.
Chamando um método da classe de código do VBA.
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).
Microsoft Office Excel 2007.
Observação: Você também pode executar esta explicação passo a passo usando o Microsoft Office Excel 2003.No entanto, alguns das instruções presumem que você está usando a faixa de opções no Excel 2007.
Ferramentas do Visual Studio para o Office é instalado por padrão com as versões listadas do Visual Studio.Para Marcar se ele está instalado, Marcar Instalando o Visual Studio Tools para Office.
Para uma demonstração de vídeo, consulte vídeo como para: Chamar o código em um aplicativo-nível Adicionar - in do VBA.
Criando o Adicionar - projeto
A Primeiro etapa é criar um Adicionar no projeto para o Excel.
Para criar um novo projeto
Criar um projeto de suplemento do Excel com o nome ExcelImportData, usando o Excel Adicionar - in modelo de projeto para o Microsoft Office Sistema de 2007.For more information, see Como: Criar o Visual Studio Tools para projetos do Office.
Visual Studio abre o ThisAddIn.cs ou ThisAddIn.vb arquivo de código e adiciona o projeto de ExcelImportData para Gerenciador de Soluções.
Definir uma classe que você pode expor a Outro soluções do Office
O objetivo desta explicação passo a passo é chamar o método de ImportData de uma classe chamada AddInUtilities na sua Adicionar - in do código do VBA.Este método importa dados para uma Novo planilha da pasta de trabalho Ativo e cria um simples DataSet para conter os dados.
Para expor a classe AddInUtilities Outro soluções do Office, você deve fazer a classe Público e visível para com.Você também deve fornecer uma maneira para expor a interface de IDispatch na classe.O código no procedimento a seguir demonstra uma maneira de atender a esses requisitos.For more information, see Chamar o código no nível de aplicativo Adicionar-ins de Outro soluções do Office.
Para definir uma classe que você pode expor Outro soluções do Office
No menu Project clique em Add Class.
Na caixa de diálogo Add Novo Item , Alterar o nome da Novo classe para AddInUtilitiese clique em Adicionar.
O arquivo de de AddInUtilities.vb de ou AddInUtilities.cs abre no Editor de código.
Adicionar as seguintes instruções para o início do arquivo.
Imports System.Data Imports System.Runtime.InteropServices Imports Excel = Microsoft.Office.Interop.Excel
using System.Data; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel;
Substituir o Vazio AddInUtilities declaração de classe com o código a seguir.
Esse código torna a classe AddInUtilities visível a COM, e adiciona o método ImportData à classe.Para expor a interface de IDispatch , a classe AddInUtilities também implementa uma interface que tem o atributo InterfaceIsIDispatch.
<System.Runtime.InteropServices.ComVisibleAttribute(True)> _ <System.Runtime.InteropServices.InterfaceType(ComInterfaceType.InterfaceIsIDispatch)> _ Public Interface IAddInUtilities Sub ImportData() End Interface <System.Runtime.InteropServices.ComVisibleAttribute(True)> _ <System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)> _ Public Class AddInUtilities Implements IAddInUtilities Public Sub ImportData() Implements IAddInUtilities.ImportData ' Create a new DataTable. Dim ds As New DataSet() Dim dt As DataTable = ds.Tables.Add("Customers") dt.Columns.Add(New DataColumn("LastName")) dt.Columns.Add(New DataColumn("FirstName")) ' Add a new row to the DataTable. Dim dr As DataRow = dt.NewRow() dr("LastName") = "Chan" dr("FirstName") = "Gareth" dt.Rows.Add(dr) ' Add a new XML map to the collection. Dim activeWorkbook As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook Dim xmlMap1 As Excel.XmlMap = activeWorkbook.XmlMaps.Add(ds.GetXmlSchema(), _ "NewDataSet") ' Import the data. If Not (xmlMap1 Is Nothing) Then Dim lastSheet As Object = activeWorkbook.Sheets(activeWorkbook.Sheets.Count) Dim newSheet As Excel.Worksheet = CType(activeWorkbook.Sheets.Add( _ After:=lastSheet), Excel.Worksheet) newSheet.Name = "Imported Data" activeWorkbook.XmlImportXml(ds.GetXml(), xmlMap1, True, _ newSheet.Range("A1")) End If End Sub End Class
[System.Runtime.InteropServices.ComVisibleAttribute(true)] [System.Runtime.InteropServices.InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IAddInUtilities { void ImportData(); } [System.Runtime.InteropServices.ComVisibleAttribute(true)] [System.Runtime.InteropServices.ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { public void ImportData() { // Create a new DataTable. DataSet ds = new DataSet(); DataTable dt = ds.Tables.Add("Customers"); dt.Columns.Add(new DataColumn("LastName")); dt.Columns.Add(new DataColumn("FirstName")); // Add a new row to the DataTable. DataRow dr = dt.NewRow(); dr["LastName"] = "Chan"; dr["FirstName"] = "Gareth"; dt.Rows.Add(dr); // Add a new XML map to the collection. Excel.Workbook activeWorkbook = Globals.ThisAddIn.Application.ActiveWorkbook; Excel.XmlMap xmlMap1 = activeWorkbook.XmlMaps.Add(ds.GetXmlSchema(), "NewDataSet"); // Import the data. if (xmlMap1 != null) { object lastSheet = activeWorkbook.Sheets[activeWorkbook.Sheets.Count]; Excel.Worksheet newSheet = (Excel.Worksheet)activeWorkbook.Sheets.Add( System.Type.Missing, lastSheet, 1, System.Type.Missing); newSheet.Name = "Imported Data"; activeWorkbook.XmlImportXml(ds.GetXml(), out xmlMap1, true, newSheet.get_Range("A1", System.Type.Missing)); } } }
Expor a classe Outro soluções do Office
Para expor Outro soluções do Office, a classe AddInUtilities Substituir o método RequestComAddInAutomationService na classe ThisAddIn.Na sua Substituir, retornar uma instância da classe AddInUtilities.
Para expor a classe AddInUtilities Outro soluções do Office
Em Gerenciador de Soluções, Expandira Excel.
Clique com o botão direito do mouse ThisAddIn.cs ou ThisAddIn.vbe, em seguida, clique em Exibir Código.
Adicione o seguinte código à classe ThisAddIn:
Private utilities As AddInUtilities Protected Overrides Function RequestComAddInAutomationService() As Object If utilities Is Nothing Then utilities = New AddInUtilities() End If Return utilities End Function
private AddInUtilities utilities; protected override object RequestComAddInAutomationService() { if (utilities == null) utilities = new AddInUtilities(); return utilities; }
On the menu ComCompilação, clique em Compilar solução.
Verifique se que a solução compila sem erros.
Teste o Adicionar - no
Você pode chamar na classe AddInUtilities de vários tipos diferentes de soluções do Office.Esta explicação passo a passo, você irá usar código do VBA em uma pasta de trabalho do Excel.Para obter mais informações sobre os outros tipos de soluções do Office que você também pode usar, consulte Chamar o código no nível de aplicativo Adicionar-ins de Outro soluções do Office.
Para testar o Adicionar-in
Pressionarionar F5 para executar seu projeto.
No Excel, Salvar a pasta de trabalho Ativo como uma pasta de trabalho Excel Macro-Habilitado (*.xlsm).Salvar-o em um local conveniente, como a área de trabalho.
Na faixa de opções, clique na guia de De desenvolvedor.
Observação: Se a Guia do desenvolvedor não estiver visível, você primeiro deve mostrá-lo.For more information, see Como: Mostrar a guia Desenvolvedor na Faixa de Opções.
No AAgruparar de De código de , clique em do Visual Basic.
O Editor do Visual Basic é aberto.
Na janela Projeto , clique Duplo em ThisWorkbook.
O arquivo de código para o objeto ThisWorkbook é aberto.
Adicionar o seguinte código VBA para o arquivo de código.Primeiro, este código obtém um objeto de COMAddIn que representa o ExcelImportData Adicionar-in.Em seguida, o código usa a propriedade de Object do objeto COMAddIn para chamar o método ImportData.
Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationbject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
Pressione F5.
Verifique se que uma Novo planilha de dados importados foi Adicionado para a pasta de trabalho.Também verifique se a célula A1 contém a Cadeia de Caracteres Chane célula B1 contém a Cadeia de Caracteres Gareth.
Excel Sair.
Próximas etapas
Você pode saber mais sobre a programação Adicionar-ins destes tópicos:
Usar a classe ThisAddIn para automatizar o aplicativo host e executar Outro tarefas no Adicionar - em projetos.Para obter mais informações, consulte Programação Application-Nível Adicionar-ins e Item de host addIn.
Criar um painel de tarefas Personalizar em um Adicionar-in para o Microsoft Office Sistema de 2007.Para obter mais informações, consulte Visão geral de painéis de tarefas Personalizar e Como: Adicionar um painel de tarefas Personalizar a um aplicativo.
Personalizar a Faixa de Opções em um Adicionar-in para o Microsoft Office Sistema de 2007.Para obter mais informações, consulte Visão geral da Faixa de Opções e Como: Começar a personalizar a Faixa de Opções.
Consulte também
Tarefas
Como: Criar o Visual Studio Tools para projetos do Office
Conceitos
Programação Application-Nível Adicionar-ins
Chamar o código no nível de aplicativo Adicionar-ins de Outro soluções do Office
Desenvolvendo soluções do Office
Personalizando recursos de interface do usuário usando interfaces de extensibilidade