No se puede acceder a los métodos expuestos de COM en VBA
Estoy tratando de acceder a los métodos expuestos de COM en VBA.
Problema: Estoy viendo todos los métodos por defecto (comoGetHashCode
, GetType
yToString
) en VBA perono las que forman parte de la interfaz COM y están escritas específicamente para que sean visibles como COM (comogetStringValue()
abajo).
Detalles de configuración:
Visual Studio 2008Windows 7 x64Oficina 2007.NET 3.5Interfaz 'IGetMyString.cs'<code>using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace SimpleCOMAssembly { [ComVisible(true), GuidAttribute("4153A1AC-ECE9-4f66-B56C-1DDEB6514D5D")] [InterfaceType(ComInterfaceType.InterfaceIsDual)] interface IGetMyString { [DispId(1)] string getStringValue(); } } </code>Implementación 'GetMyString.cs'
<code>using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.ComponentModel; namespace SimpleCOMAssembly { [ComVisible(true), GuidAttribute("0A3D4D65-CF50-4020-BF13-77001F8AAABE")] [ProgId("SimpleCOMAssembly.GetMyString")] [ClassInterface(ClassInterfaceType.None)] public class GetMyString : IGetMyString { public GetMyString() { } [ComVisible(true), Description("Get my string")] public string getStringValue() { return "hello"; } } } </code>
En las propiedades de construcción, he comprobado'Hacer que la Asamblea sea visible' (ver foto abajo)
También le pidió a Visual Studio 2005 que hiciera el'Registrarse para interoperabilidad COM' (ver foto abajo)
Y, finalmente, como un evento posterior a la compilación, estoy ejecutando regasm.exe para registrar el .DLL y también el .TLB en el registro de la siguiente manera:
<code>%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm /codebase "$(TargetPath)" /tlb:"$(TargetDir)$(TargetName).lib" </code>
En la vista del Explorador de objetos de Excel, habilité el servidor COM (SimpleCOMAssembly escrito anteriormente), y ahora en el Explorador de objetos no muestra el método de interfaz COM (ver más abajo)
¿Alguien puede ayudarme a saber qué me falta, lo que está causando que los métodos de la interfaz COM no se muestren en VBA?
EDITAR Adjuntando ITypeLib Vista del TLB generado