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”<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>Implementacja „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>
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:
<code>%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm /codebase "$(TargetPath)" /tlb:"$(TargetDir)$(TargetName).lib" </code>
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