使用VBA从Visio Shapes导出数据


v-star*위위
2025-03-13 02:42:27 (26天前)
  1. 我想在MS中建模类似于(超)图的东西


Visio中
</跨度>
2016 Professional然后将形状数据导出到csv以进一步使用它。

我试图制作一个VBA脚本,如果没有(在导出到csv文件之前)。我能用vba来实现吗?

Visio中
</跨度>

非常感谢您的帮助!

2 条回复
  1. 0# نسر الصحراء | 2019-08-31 10-32



    ActiveSheet是一个Excel属性。我想你在找

    ActivePage

    ,这是一个Visio等效。因此,要修复上面的代码,您可以使用:




    1. For Each shp In ActivePage.Shapes
      count = count + 1
      Debug.Print count
      Next

    2. </code>


    但是,如果您只是在页面的形状计数之后,那么您可以改为:




    1. Debug.Print ActivePage.Shapes.Count

    2. </code>


    我可以推荐一些可能也有帮助的链接:




    作为替代方法,您可能也对Visio的内置报告工具感兴趣:




    问题的第二部分(检查数据字段)我假设你在谈论读取形状数据。如果是这种情况,您首先要检查是否存在名为“ID”的行,如果存在,则读取该值。所以这样的事情可能会让你前进:




    1. Public Sub TestGetCellValues()
      GetShapesCellValues ActivePage, Prop.ID
      End Sub

    2. Public Sub GetShapesCellValues(targetPage As Visio.Page, targetCellName As String)
      Dim shp As Visio.Shape
      If Not targetPage Is Nothing Then
      For Each shp In targetPage.Shapes
      If shp.CellExistsU(targetCellName, 0) = True Then
      Debug.Print shp.NameID & “!”
      & targetCellName & =

      & shp.CellsU(targetCellName).ResultIU
      End If
      Next shp
      End If
      End Sub

    3. </code>


    …可能输出这样的东西(给定相关的形状):




    1. Sheet.2!Prop.ID = 3

    2. </code>

登录 后才能参与评论