我正在努力将旧的VBA项目转换为C#VSTO。我知道很多代码都要离开窗口,但我希望仍然使用已经嵌入到工作表中的布局和对象。对象的示例包括控件按钮,标签,图像等。
当我在制作新项目时选择文档作为模板时,所有这些都很好地存在。我遇到的问题是我似乎无法选择或引用任何这些对象。例如,工作表中间有一个按钮。如果我在VS2012中打开工作表,我可以看到按钮。我甚至可以“突出”它但不选择它。如果我右键单击按钮以拉出属性,它将调出工作表的属性,而不是按钮。我无法调整它们的大小或移动它们(不是我想要的)。
我似乎也无法在代码中引用它们,即...Sheet1.ControlButton1...
或...Sheet1.OleObject(n)...
永远不会引用任何内容。如果我直接从解决方案文件夹打开工作簿并单击相同的控件,我可以看到属性,Excel中的公式栏显示=EMBED("Forms.CommandButton.1","")
。
我也无法遍历所有OleObjects并只显示其名称。很明显,无论哪个集合都存储了这些,我找不到它。
答案 0 :(得分:1)
尝试使用Workbook.Shapes集合
根据以下评论编辑。这有效: Globals.ThisWorkbook.Worksheets(1).OLEObjects(" CommandButton1的&#34);