Невозможно получить доступ к COM-методам в VBA
Я пытаюсь получить доступ к COM-методам в VBA.
Problem: Я вижу все методы по умолчанию (например,GetHashCode
, GetType
а такжеToString
) в VBA нон те, которые являются частью интерфейса COM и специально написаны, чтобы быть видимыми для COM (например,getStringValue()
ниже).
Подробности настройки:
Визуальная Студия 2008 Windows 7 x64 Офис 2007 .NET 3.5Interface '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>Implementation '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>
В свойствах сборки я проверял «Сделать сборку видимой». (см. снимок ниже)
Также попросил Visual Studio 2005 сделать 'Зарегистрируйтесь для COM-взаимодействия' (см. снимок ниже)
И, наконец, как событие после сборки, я запускаю regasm.exe для регистрации .DLL, а также .TLB в реестре следующим образом:
<code>%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm /codebase "$(TargetPath)" /tlb:"$(TargetDir)$(TargetName).lib" </code>
В окне просмотра объектов Excel я включил COM-сервер (SimpleCOMAssembly, описанная выше), и теперь в обозревателе объектов он не перечисляет метод интерфейса COM (см. Ниже
Может кто-нибудь помочь мне узнать, чего мне не хватает, из-за чего методы интерфейса COM не отображаются в VBA?
РЕДАКТИРОВАТ Присоединение ITypeLib Просмотр сгенерированного TLB