【发布时间】:2018-04-03 13:44:22
【问题描述】:
我正在尝试将 VBA 代码传输到 C#,以便我制作的表单应用程序是独立的。我在尝试从形状内(在一个组中)的形状中获取文本时遇到问题。这是一个完美运行的 VBA 示例。
Dim text as String
text = groupShape.shapes.item("rectangle").text
这是返回正确的值。 在 C# 中,我使用的是 microsoft.office.interop.visio.dll 参考。我已经能够很好地读取形状名称,所以我知道我的应用程序和文档对象工作正常。在 C# 中,上面的代码如下所示:
var text = "";
text = Doc.Shapes.ItemU("groupShape").Shapes.ItemU("rectangle").text
这没有返回正确的值。它是说它会返回“Object”,所以我相信它不是返回一个字符串而是一个对象。
为了返回文本,我可以做些什么来解决这个问题?谢谢!
编辑: 这是我正在编写的实际代码。 vba 和 c#
VBA:
Dim tempShape As Shape
Set tempShape = ActiveDocument.Pages(pageName).Shapes.Item("MainTable")
txtJobName.value = tempShape.Shapes.Item("textJobName").Text
c#
IVisio.Shape tempShape = Doc.Pages[Loaded_Page.Name].Shapes.ItemU["MainTable"];
Txt_JobName.Text = tempShape.Shapes.ItemU["textJobName"].Characters.Text;
另一个编辑: 我还尝试通过引用文本所在的单元格来进入形状数据属性,但仍然没有运气。
Txt_JobName.Text = tempShape.Shapes.ItemU["textJobName"].CellsSRC[8, 0, 0].ResultStr[0];
【问题讨论】:
标签: c# vba com-interop visio