在 Visio.Shape shape = shapes.get_ItemFromID(3);此处报错Invalid sheet identifier.'
时间: 2024-02-20 21:56:26 浏览: 142
如果报错"Invalid sheet identifier",那么可能是因为你的Shapes集合中没有ID为3的图形。请确认一下Shapes集合中是否有ID为3的图形,如果没有,请根据实际情况修改代码中的图形ID。
如果你不确定Shapes集合中的图形ID是多少,可以尝试使用Shapes集合中的其他属性,例如Name或Index来获取指定的图形。下面是一个示例代码:
```csharp
using Visio = Microsoft.Office.Interop.Visio;
Visio.Application visioApp = new Visio.Application();
visioApp.Visible = true;
Visio.Document doc = visioApp.Documents.Add("");
Visio.Page page = doc.Pages[1];
Visio.Shapes shapes = page.Shapes;
Visio.Shape shape = shapes["Rectangle.1"];
shape.CellsU["PinX"].FormulaU = "5";
shape.CellsU["PinY"].FormulaU = "5";
```
上述代码中,我们使用Shapes集合的Name属性来获取名称为"Rectangle.1"的图形,并将其放置在指定的坐标点(5,5)。
需要注意的是,Shapes集合中的图形名称和索引都是可以在Visio中编辑的,所以需要根据实际情况来选择合适的方法来获取指定的图形。
相关问题
group_shapes = [shp for shp in slide.shapes if shp.shape_type ==MSO_SHAPE_TYPE.GROUP]
这行代码的作用是筛选出幻灯片中的所有分组形状。它使用了列表推导式(list comprehension)来遍历 `slide.shapes` 列表,并通过条件判断 `shp.shape_type == MSO_SHAPE_TYPE.GROUP` 来判断形状的类型是否为分组形状。如果是分组形状,则会被添加到 `group_shapes` 列表中。
group_shapes = [shp for shp in slide.shapes if shp.shape_type ==MSO_SHAPE_TYPE.GROUP]的作用
这段代码的作用是从幻灯片中获取所有的分组形状。它使用了列表推导式(List comprehension)来遍历 `slide.shapes` 中的每个形状,并检查其类型是否为 `MSO_SHAPE_TYPE.GROUP`,如果是,则将该形状添加到 `group_shapes` 列表中。最终,`group_shapes` 列表将包含所有的分组形状。
阅读全文