IntelliSense in custom COM classes in VBA

后端 未结 1 747
耶瑟儿~
耶瑟儿~ 2021-01-11 19:51

Is there a way to get IntelliSense in own built COM classes in VBA?

E.g. in the example below I would like to get \"Number\" showing up, whenever I press on the dot

相关标签:
1条回答
  • 2021-01-11 20:50

    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:\Windows\Microsoft.NET\Framework\v4.0.30319>regasm C:\Temp\IntellisenseDemo.dll /tlb: C:\Temp\IntellisenseDemo.tlb
    

    VBA

    0 讨论(0)
提交回复
热议问题