KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

VB/VBAトップへ ▼カッ飛び最後 

  子シェイプも含めて、全てのシェイプを処理

01: 名前:visGeek投稿日:2007/07/29(日) 16:52
ページ内の全シェイプ(子シェイプも含む)を処理したいと思います。

protected virtual void hoge(Vis.Shapes shps)
{
foreach (Vis.Shape shp in shps)
{
//ここでshpを処理

//shpの子シェイプを処理
hoge(shp.Shapes);
}
}

というメソッドを
hoge(Connect.AppObj.ActivePage.Shapes);
と呼び出しています。

基本的にはうまくいくのですが、この処理を含むカスタムメニュー
(アドオンプログラム)を複数回実行していると、メニューを実行しても
アドオンプログラムが呼び出されなくなってしまうことがあります。
プログラムのスタート部分にブレークポイントを設定して
メニューを実行しても、何も反応しない状態です。

Visio起動後、初めの1回は必ず正常のようです。
正常に実行できる回数は、図面によって異なるようです。
また、何度実行しても正常に実行できる図面もあります。

メニューはCommandBarButtonのClickイベントを使用しています。

何が問題でしょうか?
他に方法はありますでしょうか?

環境:
Visio 2003&C#


VB/VBAトップへ ▲カッ飛び先頭