交互OleObjects/嵌入式控件VSTO, VBA转换

本文关键字:VBA 转换 VSTO 控件 OleObjects 嵌入式 交互 | 更新日期: 2023-09-27 17:49:58

我正在将旧的VBA项目转换为c# VSTO。我知道有很多代码必须去掉,但我希望仍然使用嵌入到表单中的布局和对象。对象的示例包括控件按钮、标签、图像等。

当我在创建新项目时选择该文档作为模板时,所有这些都很好地保留了下来。我遇到的问题是,我似乎无法选择或引用任何这些对象。例如,在床单的中间有一个按钮。如果我在VS2012中打开工作表,我可以看到按钮。我甚至可以"高亮"它,但不能选择它。如果我右键单击按钮以拉出属性,它将显示工作表的属性,而不是按钮。我不能调整它们的大小或移动它们(不是我想要的)。

我似乎也不能在代码中引用它们,即...Sheet1.ControlButton1......Sheet1.OleObject(n)...永远不会引用任何东西。如果我直接从解决方案文件夹中打开工作簿并单击相同的控件,我可以看到属性,Excel中的公式栏显示为=EMBED("Forms.CommandButton.1","")

我也不能遍历所有的OleObjects,只显示它们的名字。很明显,无论收藏在哪里,我都找不到它

交互OleObjects/嵌入式控件VSTO, VBA转换

试试工作簿。形状收集

根据下面的评论编辑。如此:Globals.ThisWorkbook.Worksheets (1) .OLEObjects("CommandButton1");