Conectando o VSTO com o VBA

No meu mais novo desafio, tenho que desenvolver um ADD-IN pro Excel 2010 para se conectar com um WCF e utilizar algumas UDF (User Definied Function).

O grande problema que encontrei até agora foi: Como chamar uma função customizada do meu VSTO de dentro do meu VBA? Para isso, faça o seguinte:

a) Criar um novo projeto de Excel 2010/2007 ADD-IN

b) Adicione um C# Library com o seguinte conteúdo:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Runtime.InteropServices; 
using Excel = Microsoft.Office.Interop.Excel; 
using vstoRiskAnalyst;

namespace vstoRiskAnalyst 
{

[ComVisible(true)] 
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
public interface IAddinVSTO 
{ 
    string VsToMeDaAHora(); 
}

[ComVisible(true)] 
[ClassInterface(ClassInterfaceType.None)] 
public class VSTOExample : IAddinVSTO 
{

    #region IAddinVSTO Members 

    public string VsToMeDaAHora() 
    { 
        return DateTime.Now.ToLongTimeString(); 
    }

    #endregion

}

}
 

c) no arquivo ThisAddin.cs, adicione as seguintes linhas de código:

private VSTOExample utilities; 
protected override object RequestComAddInAutomationService() 
{

    if (utilities == null)
    {
    
        utilities = new VSTOExample();    
        return utilities;        
    }
    
}

d) Publique seu ADD-IN e instale no Excel.

e) Agora vamos pra parte do EXCEL. Abra um novo Excel.

f) no Módulo de VBA, adiciona o seguinte código

Public Function VsToMeDaAHora() As String 
Dim oAddin As COMAddIn 
Dim oCOMFuncs As Object 
Set oAddin = Application.COMAddIns("vstoRiskAnalyst") 
Set oCOMFuncs = oAddin.Object 
VsToMeDaAHora = oCOMFuncs.VsToMeDaAHora 
End Function

g) Agora vá em alguma linha do Excel e digite o comando abaixo. Você deve visualizar a hora atual no Excel.

=VsToMeDaAHora()
 

Cheers,

Ernesto Gaia

Sobre matchboxt
Owner MatchBox

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: