- 01: 名前:苺投稿日:2006/03/02(木) 20:16
- いつもお世話になります。
Visio2003を使用しています。
マスターシェイプについてなのですが、図面のシェイプがマスターシェイプ
より派生されたものでない(no master)ことを調べる方法はあるのでしょうか?
というのもページ内の全シェイプに対して MasterShape.Nameで
マスターシェイプの名前を聞く処理を作成しているのですが、
四角形シェイプ等を入れているとエラーになってしまうので回避したい
のです。
もしご存知の方がいらっしゃればご教授ください。
- 02: 名前:yoda投稿日:2006/03/02(木) 21:04
- CreateSelectionを使えばできると思います。
特定の名前のマスターから派生したシェイプを求めるという、既出の話題
がありますので、ご参考になるかもしれません。
- 03: 名前:yoda投稿日:2006/03/02(木) 21:19
- こんな感じかと思います。
Sub FindAllMasteredShapes2()
Dim vsoSelection As Visio.Selection
Dim myMaster As Visio.Master
Dim shp As Visio.Shape
ActiveWindow.DeselectAll
For Each myMaster In ThisDocument.Masters
Set vsoSelection = ActivePage.CreateSelection(visSelTypeByMaster, visSelModeSkipSub, myMaster)
For Each shp In vsoSelection
Debug.Print myMaster.Name, shp.Name
ActiveWindow.Select shp, visSelect
Next
Next
End Sub
- 04: 名前:苺投稿日:2006/03/03(金) 08:03
- yoda様
いつもありがとうございます。
サンプルまで作成してくださいまして誠にありがとうございます。
早速試してみます。
またMasterShapeで検索をかけたのですがヒットしなかったので
あきらめていました。もう少し過去ログを探すようにします。
- 05: 名前:visGeek投稿日:2006/03/03(金) 09:42
- MasterプロパティがNothingかどうかを調べてください。
- 06: 名前:yoda投稿日:2006/03/03(金) 10:22
- あっ。なーるほど。こんな感じでは?
Sub test()
Dim shp As Visio.Shape
For Each shp In ActivePage.Shapes
If shp.Master Is Nothing Then
Debug.Print shp.Name & " no master"
Else
Debug.Print shp.Name & " " & shp.Master.Name
End If
Next
End Sub
- 07: 名前:苺投稿日:2006/03/03(金) 13:32
- visGeek様、yoda様
ありがとうございます。
一番回避しやすい方法は、 Master Is Notihg でした。
(プログラムの修正を最小限にするという意味で)
yoda様、またサンプルを作って頂きありがとうございました。
CreateSelectionで過去ログを見て、方法1に書いてあった
『If Not shp.Master Is Noting Then』という箇所が
まさにそれだと思いました。
本当にありがとうございました。
- 08: 名前:うめ投稿日:2006/03/03(金) 17:49
- 毎回コメントを送信してもエラーになり、
送信できたと思ったらへんな形になってしまいました。
すみません。
VISIO画面にExcelのオブジェクトを挿入し、
既存のExcelファイルの1シートの一部分を
VISIO画面上に挿入したExcelオブジェクトのセルに
コピーしたいのですが
VISIOのVBAを使って
そんな事ってできますか?
- 09: 名前:うめ投稿日:2006/03/03(金) 18:07
- やっぱり変なところに送信されてしまいました。
自分がたてた
EXCELというスレッドに送信したのに。
申し訳ありません。
何回かチャレンジして
別スレッドをたてます。
本当に申し訳ありません。
■トップに戻る リロード 単独スレ表示
|