- 01: 名前:morlly投稿日:2004/01/25(日) 13:11
- 初めまして。どなたかお知恵を貸して下さい。
Visio2000を使用して、スキャナで取り込んだ地形図にレイヤーを使って色々な情報を重ね合わせています。
その際に一つのレイヤー上にある複数のポリゴンにカスタムプロパティーを利用して詳細な数値情報を記録しているのですが、そのカスタムプロパティーに入力した数値によってポリゴンの線分の塗り分けやポリゴンの塗りつぶしなどをVisio2000でオートメーション化できるのでしょうか。
イメージとしては、EXCELの条件付き書式のようなものになるかと思います。
他のVisio関連の掲示板などでもVisioを利用した簡易GISの構築など同じような志向をされている方がおられるようですが、なかなかこれといった方法が思い浮かばす苦慮しております。
こういったVisioを活用した事例集のような書籍が有れば合わせてご教授頂ければ幸いです。
- 04: 名前:morlly投稿日:2004/01/26(月) 09:57
- さっそくのレスありがとうございます。
考えているのは、例えばカスタムプロパティーに従業員数などのデータを入力して、「50人以上であればLineColorを赤、50人未満であればLineColorを青」するような作業です。
判りにくい文章ですみませんでした。
- 05: 名前:なか投稿日:2004/01/26(月) 11:09
- ページのカスタムプロパティに従業員数が設定されているとしたら
↓とか
LineColor=IF(ThePage!Prop.Row_1>50, 2, 4)
- 06: 名前:morlly投稿日:2004/01/26(月) 18:13
- “なか”さんレスありがとうございます。さっそく試してみました。
ページではなくて、自分で作成したポリゴン(Visioではシェイプというのでしょうか?)にカスタムプロパティーを設定したため、LineColor=IF(Prop.Row_1>50,2,4)と論理式を記述してうまくいきました。
また、カスタムプロパティを一つ増やして、Prop.low1に従業員数を記述して、Prop.low2にLineColor=IF(Prop.Row_1>50,2,4)と記述し、さらにLineColor=Plop_Low2と記述しても同じ作業ができました。
さらに作業を進めて、同じレイヤー上にあるすべてのポリゴン(建物、この場合商業施設)に一括してLineColor=IF(Prop.Row_1>50, 2, 4)と設定できるような論理式の記述はあるのでしょうか。
なんだか教えて君みたいで申し訳ないですがお知恵を拝借できれば助かります。
- 07: 名前:morlly投稿日:2004/01/27(火) 12:54
- "yoda"さん、"なか"さんのレスを参考にLineColorのセルはいじらずに、
カスタムプロパティのセルでIFの判別とLineColorのセルへの結果の出力を
できるように
Prop.Row2=SETF("LineColor","IF(Prop.Row_1>50,2,4)")
と記述してみました。
結果、シェイプを選択してシェイプシートを開くと
Prop.Row2="SETF("LineColor","IF(Prop.Row_1>50,2,4)")"
と文字列として記述されていました。
シェイプシートの方で
Prop.Row2=SETF("LineColor","IF(Prop.Row_1>50,2,4)")
と修正すると問題なく動くのですが、Visioのカスタムプロパティでは、
複数のシェイプを選択して論理式を記述するとすべて文字列となって
返されてしますのでしょうか?
シェイプの数が少なかったらLineColorセルがProp.Row1を参照する
ように設定すれば問題ないのですが、さすがにシェイプの数が100や
200のオーダーになると厳しいですね。何か良いアイデアが有ればい
いのですが・・・。
- 08: 名前:yoda投稿日:2004/01/27(火) 14:34
- ちょっと、意味がわかりません。
もう少し、簡潔に書いていただけると、
ありがたいのですが。
- 09: 名前:morlly投稿日:2004/01/28(水) 07:04
- 自分でも書いたあとで見てわかりにくい文章だなと反省
しています。
今のところ、シェイプの一つ一つを個別に選択してシェイ
プシートを開き、シェイプシートのカスタムプロパティに下
記のような論理式を記述することにより色の塗りわけを指
定することはできるようになりました。
Prop.Row_1=10 →従業員数は10人
Prop.Row2=SETF("LineColor","IF(Prop.Row_1>50,2,4)") →従業員数が50人より多い場合は2(赤)を、50人以下の場合は4(青)をLineColorセルに入力
これと同じ記述をレイヤー上のすべてのシェイプに一度に
設定する方法はないでしょうか。
現状では、すべてのシェイプを選択し、シェイプシートを開
かずにカスタムプロパティに上記の記述をすることはでき
るのですが、後でシェイプシートを開くと下記のように
Prop.Row2に記述した式が文字列として返されています。
Prop.Row_1=10
Prop.Row2="=SETF(""LineColor"",""IF(Prop.Row_1>50,2,4)"")" ←文字列になっている
分かりにくかったらすみません。
- 10: 名前:yoda投稿日:2004/01/28(水) 08:55
- VBAを使えばできます。
VB/VBAの広場では、
類似の話題を見つけることができます。
- 11: 名前:なか投稿日:2004/01/28(水) 09:00
- カスタムプロパティのRow2のように式を設定するのはVisio的にはおかしいです。
Visioではそのような使い方は想定されていないと思います。
>これと同じ記述をレイヤー上のすべてのシェイプに一度に設定する方法
マクロ等を作成する
レイヤーの判定とかちょっと面倒ですが、
シェイプシートへのデータ設定は難しいことではないので結構簡単にできると思います。
- 12: 名前:morlly投稿日:2004/01/28(水) 09:48
- "yoda"さん、"なか"さん、判りにくい質問に答えて頂いてありがとうございます。
"なか"さんが言われるように、Visio的におかしいことがわかったことだけでも収穫です。
VBAは初心者なので過去ログを参考にさせていただきながら作業を進めたいと思います。
■トップに戻る リロード 全レスを表示
|