VSTO以编程方式添加基于现有工作表的新工作表

时间:2009-10-20 11:01:59

标签: c# ms-office vsto

我目前有C# Workbook-level Office 2007 Addin在设计时添加了Worksheet,我在Worksheet派生类中添加了方法和属性。

我希望能够以编程方式创建一个新的工作表克隆继承或拥有此现有工作表类的方法和事件处理程序自动。

如果可以实现这一目标,那么有人可以概述一下如何实现这一目标吗?尽管任何.NET代码都可以接受,但最好使用C#演示代码。

谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

好的,好问题,我会密切关注这里发生的事情。

几个月前,我遇到了类似的问题,需要在动态创建的工作表上创建代码和事件。但是,为了能够做到这一点,我最终在工作表中创建了VBA脚本对象。

所以过程是:

  1. Excel中的用户点击按钮
  2. C#进程创建新工作表
  3. C#进程在工作表上创建VBA对象并创建事件等
  4. 
         oBook = objExcel.ActiveWorkbook;
    
        oModule = oBook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
    
        string sCode = "sub myVBASub()\r\n"+
                "msgbox("Hello")\r\n"+
                "End Sub\r\n";
    
        oModule.CodeModule.AddFromString(sCode);
    
    

答案 1 :(得分:1)

我现在得出的结论是,在我们正在寻找的现有状态下复制这些类实际上是不可行的。

根据Host Items and Host Controls Overview:在文档级别插件中,无法以编程方式创建主机项,但仅限于设计时。这进一步加强了explanation of the programmatic limitations主机项和主机控件,特别是对于文档级插件。