如何提取Visio文档级ShapeSheet中的Shape Data(类页面/形状提取方式)
提取Visio文档级Shape Data的方法
如果你已经在Visio文档的ShapeSheet中创建了Shape Data字段,除了使用TheDoc!前缀的方式,还可以通过以下更贴合Shape Data逻辑的方式提取:
ShapeSheet公式直接引用
在任意形状的ShapeSheet单元格中,直接使用Document!Prop.字段名称的格式调用文档级Shape Data。比如你定义了名为ProjectID的文档级字段,就可以写Document!Prop.ProjectID,该公式会直接返回对应的字段值,和TheDoc!Prop.ProjectID的效果完全一致,但写法更符合Shape Data的常规引用习惯。VBA代码批量提取
如果需要程序化获取所有文档级Shape Data,可以通过访问文档的ShapeSheet属性实现,示例代码如下:Sub FetchDocumentShapeData() Dim activeDoc As Visio.Document Dim propSection As Integer Dim propRow As Integer Set activeDoc = Visio.ActiveDocument propSection = visSectionProp ' 遍历所有文档级Shape Data行 For propRow = 0 To activeDoc.ShapeSheet.RowCount(propSection) - 1 ' 获取字段名称和对应值 Dim propName As String Dim propValue As Variant propName = activeDoc.ShapeSheet.CellsSRC(propSection, propRow, visCustPropsLabel).ResultStr("") propValue = activeDoc.ShapeSheet.CellsSRC(propSection, propRow, visCustPropsValue).Result("") ' 输出到立即窗口,可替换为保存到变量/文件等逻辑 Debug.Print "字段: " & propName & " | 值: " & propValue Next propRow End Sub
示例效果说明:截图中展示了在形状的文本单元格中使用
Document!Prop.ProjectName引用文档级Shape Data,最终形状文本成功显示出文档级字段的对应值,实现了和引用形状级Shape Data一致的直观效果。
内容的提问来源于stack exchange,提问作者Laime
相关产品推荐
相关产品推荐

