如何在VBA中的形状之间复制Visio shapesheet节

如何在VBA中的形状之间复制Visio shapesheet节,vba,visio,shapesheet,Vba,Visio,Shapesheet,是否有一种方法可用于使用VBA将一个形状的截面复制到另一个形状?我特别尝试将所有自定义属性和用户单元格从一个页面复制到另一个页面。不幸的是,没有简单的方法可以做到这一点。您必须循环源工作表中的所有行,并在目标工作表中创建相同的行。例如: Dim oPageSheet1 As Visio.Shape Dim oPageSheet2 As Visio.Shape Dim rowName As String Dim i As Integer Set oPageSheet1 = Visio

是否有一种方法可用于使用VBA将一个形状的截面复制到另一个形状?我特别尝试将所有自定义属性和用户单元格从一个页面复制到另一个页面。

不幸的是,没有简单的方法可以做到这一点。您必须循环源工作表中的所有行,并在目标工作表中创建相同的行。例如:

Dim oPageSheet1 As Visio.Shape
Dim oPageSheet2 As Visio.Shape
Dim rowName     As String
Dim i   As Integer

Set oPageSheet1 = Visio.ActiveDocument.Pages.Item(1).PageSheet
Set oPageSheet2 = Visio.ActiveDocument.Pages.Item(2).PageSheet

i = visRowUser

While oPageSheet1.CellsSRCExists(visSectionUser, i, visUserValue, False)
    oPageSheet2.AddNamedRow visSectionUser, oPageSheet1.Section(visSectionUser).Row(i).NameU, 0
    oPageSheet2.Section(visSectionUser).Row(i).Name = oPageSheet1.Section(visSectionUser).Row(i).Name
    oPageSheet2.CellsSRC(visSectionUser, i, visUserValue).FormulaU = oPageSheet1.CellsSRC(visSectionUser, i, visUserValue).FormulaU
    oPageSheet2.CellsSRC(visSectionUser, i, visUserPrompt).FormulaU = oPageSheet1.CellsSRC(visSectionUser, i, visUserPrompt).FormulaU
    i = i + 1
Wend
如果您必须复制大量行,并且性能是一个考虑因素,那么您应该研究使用和