目前,我有一个Visio文件,该文件具有网络分区图(第1页),用户可以在其中将形状放在不同的区域中。可以在该页面上运行VB宏,该宏将收集特定于这些形状和流的各种数据,并将其导出到Word文件中以进行进一步报告。一切都很好,并且按预期工作。
但是,例如在云上,网络分区是不同的。因此,我想在同一文件中制作另一个页面(第2页),该页面具有更多面向云(GCP,AWS)的分区明细(VPC等)。我想在该页面(2)上运行相同的宏,以将详细信息导出到word文件中。
问题:我应该如何以及在何处告诉宏应该从哪个页面获取数据以运行输出。我一直在玩“ Set vsoPage = ActiveWindow.Page”之类的事情,并在宏收集形状的所有元信息之前执行了该过程
我希望基于MS Visio页面,该宏将从当前处于活动状态的页面中获取形状。
但是不,它只是在第1页上吐出东西,而不是第2页上的内容(尽管处于活动状态)。
只是想知道是否:-这是使用的正确代码行吗?-位置正确吗?
非常感谢您的帮助
更有可能是:
设置vsoPage = ActivePage
我不确定您的宏如何以及何时工作,但是以下一些片段可能会有所帮助:
'// Get the active page:
Dim visPg as Visio.Page
Set visPg = Visio.ActivePage
If Not(visPg Is Nothing) Then
...
End If
'// Here we'll be really picky about the active window, this is
'// probably overkill, but Visio can have several different types
'// of active windows:
Dim visPg as Visio.Page
Dim visWin As Visio.Window
Set visWin = Visio.ActiveWindow
If (visWin .Type = Visio.VisWinTypes.visDrawing) Then
If (visWin .SubType = Visio.VisWinTypes.visPageWin) Then
'// The active window is a drawing page window, and not
'// a master-editing window, nor a group-editing window:
Set visPg = visWin.Page
'//...do stuff with visPg
End If
End If