VSTO工作簿属性中缺少EnableVBACallers

时间:2017-07-27 11:08:36

标签: c# vba visual-studio excel-vba excel

我正在尝试按照this指南从VBA调用C#代码。我可以在工作簿属性中看到ReferenceAssemblyFromVbaProject并将其设置为true,但解决方案资源管理器不会在工作簿或工作表属性中显示EnableVBACallers。 VS2015和2017也是如此。

代码与上面链接的msdn示例完全相同。以下是ThisWorkbook类。如果它提供任何额外信息,我可以通过GetManagedClass从VBA调用ImportData函数,但我在VBA中的工作簿上没有CallVSTOAssembly方法。

    [ComVisible(true)]
    public interface IVSTOCallWrapper
    {
        void ImportData();
    }
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    public class VSTOWrapper : IVSTOCallWrapper
    {
        public void ImportData()
        {
            Excel.Worksheet activeWorksheet = Globals.ThisWorkbook.Application.ActiveSheet as Excel.Worksheet;

            if (activeWorksheet != null)
            {
                Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing);
                range1.Value2 = "Some junk";
            }
        }
    }
    public VSTOWrapper vcall;
    protected override object GetAutomationObject()
    {
        if (vcall == null)
            vcall = new VSTOWrapper();

        return vcall;
    }

0 个答案:

没有答案