IntelliSense in custom COM classes in VBA
Is there a way to get IntelliSense in own built COM classes in VBA?
Eg in the example below I would like to get "Number" showing up, whenever I press on the dot (or ctrl+space for shortcut):
I suppose, if this is somehow resolved, I would also get some info concerning the public functions of the objects here:
Thus, what are the suggestions?
Suggestion 1 :
Result - did not work.
Result: This is what worked for me (code mainly from @dee): https://github.com/Vitosh/C-Sharp-Stuff/tree/master/IntSense
Simple example could look like this.
c# class library named IntellisenseDemo
code
using System;
using System.Runtime.InteropServices;
namespace IntellisenseDemo
{
[ComVisible(true)]
[Guid("41B3F5BC-A52B-4AED-90A0-F48BC8A391F1")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IIntellisenseDemo
{
int Number { get; set; }
string TestString(string name);
}
[ComVisible(true)]
[Guid("20EBC3AF-22C6-47CE-B70C-7EBBA12D0A29")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("IntellisenseDemo.Demo")]
public class Demo : IIntellisenseDemo
{
public int Number { get; set; }
public string TestString(string name)
{
throw new NotImplementedException();
}
}
}
Note: [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
indicates that an interface is exposed to COM as a dispinterface, which enables late binding only.
[ClassInterface(ClassInterfaceType.None)]
means the CLR does not expose a class interface for this type. COM clients can call the members of this class using the methods from the IIntellisenseDemo
interface.
regasm
C:WindowsMicrosoft.NETFrameworkv4.0.30319>regasm C:TempIntellisenseDemo.dll /tlb: C:TempIntellisenseDemo.tlb
VBA
链接地址: http://www.djcxy.com/p/37612.html上一篇: MWS在PHP中提供更新数量
下一篇: VBA中自定义COM类中的智能感知