2016-10-31 4 views
1

こんにちは、私はvisioでVBAをかなり使い慣れていますし、特定のシェイプがドロップされたときにページがアクティブなドキュメントに追加されるようにVisioテンプレートに機能を追加しようとしていますページに。私はMSDNを見渡して、Application.ShapeAdded関数を使用している例が見つかりましたが、私が作業しているアクティブなドキュメントは、変更されたコードに応答していないようです。シェイプのドロップ時にvisioにシェイプ/ページを追加する

(Visio.IVShapeとしてByVal vsoShape)Document_ShapeAddedます。Private Sub

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 

End Subの

私は、私が確認した形状のマスター "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ルーチンを起動され、問題のマスタシェイプにシェイプシートCALLTHIS機能を追加することができます新しいページを追加するか、何をする必要があるかを指定します。

+0

シェイプシートのイベントセクションでCALLTHISを使用することができました。ありがとう!これは非常に役に立ちました。 –

+0

偉大な、それは答えがあなたのために働いたようだ、それは正しいと私の答えを受け入れることを期待しています。ありがとう。 –

関連する問題