Nie można uzyskać dostępu do odsłoniętych metod COM w VBA
Próbuję uzyskać dostęp do odsłoniętych metod COM w języku VBA.
Problem: Widzę wszystkie domyślne metody (jakGetHashCode
, GetType
iToString
) w VBA, alenie te, które są częścią interfejsu COM i specjalnie napisane, aby były widoczne jako COM (jakgetStringValue()
poniżej).
Szczegóły konfiguracji:
Visual Studio 2008Windows 7 x64Office 2007.NET 3.5Interfejs „IGetMyString.cs”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();
}
}
Implementacja „GetMyString.cs”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";
}
}
}
W właściwościach budowania sprawdziłem„Sprawdź, czy zespół COM jest widoczny” (patrz poniżej migawka)
Poprosił również Visual Studio 2005 o wykonanie„Zarejestruj się na interop COM” (patrz poniżej migawka)
I wreszcie, jako zdarzenie po kompilacji, używam regasm.exe, aby zarejestrować .DLL, a także .TLB do rejestru w następujący sposób:
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm /codebase "$(TargetPath)" /tlb:"$(TargetDir)$(TargetName).lib"
W widoku Excel Object Explorer włączyłem serwer COM (napisany powyżej SimpleCOMAssembly), a teraz w Eksploratorze obiektów nie wyświetla on metody interfejsu COM (patrz poniżej)
Czy ktoś może mi pomóc wiedzieć, czego brakuje, co powoduje, że metody interfejsu COM nie są wyświetlane w VBA?
EDYTOWAĆ Dołączanie widoku ITypeLib wygenerowanej TLB