将VBA宏应用于Visio中的不同页面

目前,我有一个Visio文件,该文件具有网络分区图(第1页),用户可以在其中将形状放在不同的区域。可以在该页面上运行VB宏,该宏将收集特定于这些形状和流的各种数据,并将其导出到Word文件中以进行进一步报告。一切都很好,并且按预期工作。

但是,例如在云上,网络分区是不同的。因此,我想在同一文件中制作另一个页面(第2页),该页面具有更多面向云(GCP,AWS)的分区明细(VPC等)。我想在该页面(2)上运行相同的宏,以将详细信息导出到word文件中。

问题:我应该如何以及在何处告诉宏应该从哪个页面获取数据以运行输出。我一直在玩“ Set vsoPage = activeWindow.Page”之类的东西,并在宏收集形状的所有元信息之前执行了该

基于MS Visio页面,我希望宏可以从该页面中获取原来处于活动状态的形状。

但是,不,它只会在第1页上吐出内容,而不是第2页上的内容(尽管处于活动状态)。

只是想知道是否: -这是使用的正确代码行? -位置正确吗?

非常感谢您的帮助

xxnj916 回答:将VBA宏应用于Visio中的不同页面

更有可能是:

设置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
本文链接:https://www.f2er.com/2618910.html

大家都在问