把Visio文档中形状信息导出到XML文件的VBA代码

从老外那里找来,做了一些修改,原文地址:http://www.vbaexpress.com/kb/getarticle.php?kb_id=506

 

Option  Explicit
 
Public  Sub LocationTable()
      ' This routine will create a text file of the location and size of all 2-d shapes
      '  on the current page
     Dim shpObj      As Visio.Shape, celObj  As Visio.Cell
     Dim ShpNo       As  Integer, Tabchr      As  String, localCent  As  Double
     Dim LocationX   As  String, LocationY    As  String
     Dim ShapeWidth  As  String, ShapeHeight  As  String
     Dim unit  As  String
    
    unit =  " mm "
      ' Open or create text file to write data
    Open  " C:\temp\LocationTable.xml "  For Output Shared  As # 1
     
    Tabchr =  Chr( 9' Tab
     
    Print # 1" <?xml version=""1.0"" encoding=""gb2312"" ?> "
    Print # 1" <document path="" "; Visio.ActiveDocument.Path;  " "" name="" "; Visio.ActiveDocument.Name;  " ""> "
    Print # 1" <shapes unit="" "; unit;  " ""> "
     
     
      ' Loop Shapes collection
     For ShpNo =  1  To Visio.ActivePage.Shapes.Count
         
         Set shpObj = Visio.ActivePage.Shapes(ShpNo)
         If  Not shpObj.OneD  Then  '  Only list the 2-D shapes
             
              ' Get location Shape
             Set celObj = shpObj.Cells( " pinx ")
            localCent = celObj.Result(unit)
            LocationX = localCent  '  Format(localCent, "000.0000")
             Set celObj = shpObj.Cells( " piny ")
            localCent = celObj.Result(unit)
            LocationY = Format(localCent,  " 000.0000 ")
             
              ' Get Size Shape
             Set celObj = shpObj.Cells( " width ")
            localCent = celObj.Result(unit)
            ShapeWidth = Format(localCent,  " 000.0000 ")
             Set celObj = shpObj.Cells( " height ")
            localCent = celObj.Result(unit)
            ShapeHeight = Format(localCent,  " 0.0000 ")
             
              ' Write values to Text file starting Name of Shape
            Print # 1" <shape name="" "; shpObj.Name;  " "" type="" "; shpObj.Type;  " "" text="" "; shpObj.Text;  " "" bounds="" "; _
             LocationX;  " , "; LocationY;  " , "; ShapeWidth;  " , "; ShapeHeight;  " "" /> "
         End  If
         
     Next ShpNo
    
    Print # 1" </shapes> "
    Print # 1" </document> "
      ' Close Textfile
    Close # 1
     
      ' Clean Up
     Set celObj =  Nothing
     Set shpObj =  Nothing
End Sub

  

转载于:https://www.cnblogs.com/effun/archive/2012/10/10/2718540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值