2016-10-31 104 views
1

你好,我對VBA的visio相當新,我試圖添加功能到一個visio模板,以便每當刪除一個特定的形狀時,頁面將被添加到活動文檔到一個頁面上。我查看了MSDN,發現了一個使用Application.ShapeAdded函數的例子,但是我正在使用的活動文檔似乎沒有響應我修改過的代碼。將形狀/頁面添加到形狀降低的Visio

私人小組Document_ShapeAdded(BYVAL vsoShape作爲Visio.IVShape)

Dim vsoMaster As Visio.Master 
'Get the Master property of the shape. 
Set vsoMaster = vsoShape.Master 
'If Visio shape added is named "SC" add a new page 

If vsoMaster.Name = "SC" Then 
    NewPage 
End If 

結束子

我滴形狀的母 「SC」,這是我確認是形狀主的名稱,並沒有什麼發生。 MSDN verbage將Application.ShapeAdded描述爲打開的應用程序的事件偵聽器。我錯過了什麼,或者有沒有更好的方法來做到這一點我沒有想到?

這裏是MSDN描述:https://msdn.microsoft.com/en-us/library/office/ff766392.aspx

回答

0

的Document_ShapeAdded事件將只適用於在VBA代碼所在的文件。

你必須聲明一個應用程序對象與事件並讓它監視該事件。

例(在一個對象或的ThisDocument模塊):

Private WithEvents App as Visio.Application 
Private Sub App_ShapeAdded(ByVal Shape As IVShape) 
    Call ActiveDocument.Pages.Add() ' etc.. 
End Sub 

另外,如果是簡單的東西,你可以只添加在主形狀的問題,這只是觸發一個VBA程序到ShapeSheet中CALLTHIS功能添加一個新頁面或任何你必須做的事情。

+0

我能夠在形狀表的事件部分使用CALLTHIS。謝謝!這非常有幫助。 –

+0

太棒了,它的答案似乎適用於你,所以預計你會接受我的答案是正確的。謝謝。 –