返回

vba-如何将VISIO文件中的页面中的所有形状复制到另一个文件中

发布时间:2022-04-29 13:31:22 265

这个问题的目的

  • 如何一次从一个VISIO文件(A.vsdx)的一页选择并复制所有图形到另一个VISIO文件(B.vsdx)的另一页

实现代码

    Dim vsoApp As Visio.Application
    Dim vsoDoc As Visio.Document
    Dim new_vsoDoc As Visio.Document
    Dim vsoPage As Visio.Page
    Dim vsoItemsCnt As Long
    Dim vsoShape As Visio.Shape

           
    ' open the vsdx file (source)
    VISIOpath = "original.vsdx"
    Set vsoApp = CreateObject("Visio.Application")
    Call vsoApp.Documents.OpenEx(VISIOpath, visOpenRW)
    Set vsoDoc = vsoApp.Documents.Item(1)

    vsoItemsCnt = vsoApp.Documents.Count
    Call vsoApp.Documents.OpenEx(VSSXpath, visOpenRO)

    Set vsoApp = CreateObject("Visio.Application")
    Call vsoApp.Documents.OpenEx(VISIOpath, visOpenRW)
    Set vsoDoc = vsoApp.Documents.Item(1)
    
    ' open the vsdx file (target)
    new_path = "new.vsdx"
    Call vsoApp.Documents.OpenEx(new_path, visOpenRW)
    vsoItemsCnt = vsoApp.Documents.Count
    Dim new_vsoDoc As Visio.Document
    Set new_vsoDoc = vsoApp.Documents.Item(vsoItemsCnt)


    For Each vsoPage In vsoDoc.Pages
        vsoWindow.Page = vsoDoc.Pages.ItemU(vsoPage.NameU)

        If vsoPage.NameU = "foobar" Then
            For Each vsoShape In vsoPage.Shapes
                
                vsoWindow.Selection.Select vsoShape, visSelect
                                            
            Next vsoShape
        
            vsoWindow.Selection.Copy
            newvsoDoc.Pages.Item(vsoPage.Name).Paste
            vsoWindow.Selection.DeSelectAll

        End If
    Next vsoPage
    
    newvsoDoc.SaveAs  "change_.vsdx"

    End Sub

有两点代码我不知道如何实现。

第一

  • 在ActiveWindow命令中不能使用ActiveWindow时的另一种选择。选择

第二

  • 如何复制所有形状,同时保留页面的X和Y坐标

要求

  • 在保持连接器连接的同时进行复制
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像