0

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

4

1 回答 1

1

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

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

如果您必须复制大量行并且性能是一个考虑因素,您应该使用AddRowsSetFormulas进行调查。

于 2009-01-08T21:45:05.953 回答