チョコミントアイス

VISIOで自動で図形を描画するVBAを作成しております。
テキストからのデータの取得、
取得したデータにしたがっての、
長方形の作図、線の作成は出来ました。
この発展系として、
取得した座標を使っての図形の描画(例:三角形、中が塗れるやつ)が
上手くできません。

VISIOで普通に線を書くと、線をつなげて書いて、
最後に始点とつなげると、自動で図形になり、中を塗ることが出来るようになります。
ためしに、マクロの自動記録で、↑の作業をマクロ化してみましたが、
1個の三角形を書くマクロが生成され(ShapeのIDが決め打ち)
目的のような使い方は出来ませんでした。

お手数ですが、サンプルコード等ありましたら、お教えください。

A 回答 (1件)

私はVISIOを持っていません(かつて職場で少し使った程度)VBAの経験はありません。

しかしPPTの例を
http://msdn.microsoft.com/ja-jp/library/aa157690 …
エクセルに書き直すと、三角形作成と内部色を、つける点で旨く行きました。
フリーフォームを使うやり方です。
もし参考になれば。
フリーフォームを使うまでもないとか、少し変えてもうまく行きそうに無ければ、下記を無視してください。
ーー
エクセルの例 三角形を描く

Sub test01()
With ActiveSheet.Shapes.BuildFreeform(EditingType:=msoEditingCorner, X1:=560, Y1:=300)
.AddNodes SegmentType:=msoSegmentLine, EditingType:=msoEditingAuto, _
X1:=380, Y1:=200
.AddNodes SegmentType:=msoSegmentLine, EditingType:=msoEditingAuto, _
X1:=280, Y1:=400
.AddNodes SegmentType:=msoSegmentLine, EditingType:=msoEditingAuto, _
X1:=560, Y1:=300
.ConvertToShape.Select
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 19
End With
End Sub
ーー
●msoEditingCorner, X1:=560, Y1:=300)
始点が、左から500、上から300  A点
●msoEditingAuto, X1:=380, Y1:=200
第2点、左から380、上から200  B点 左上に上がる
●msoEditingAuto, X1:=280, Y1:=400
第3点、左から280、上から400  C点 左下に下がる
●EditingType:=msoEditingAuto, X1:=560, Y1:=300
始点に帰る。           A点(始点)右上に上がる
これで閉曲線(実はこの場合は直線)になる
これ(閉曲線になって)で内部に色をつけられる。
ーー
残りは内部に色を着けるコード部分。
ーーー
似たコードでPPTとエクセルで出来ているから、VISIOでも少し変えると出来るかも。
ActiveSheetのところは、もちろんVisio向け(ActiveDocument?)に変えてください。
ーーーー
Googleで「VISIO VBA」で照会すれば関連記事が出ますよ。
http://msdn.microsoft.com/ja-jp/office/cc917523. …ほか
http://msdn.microsoft.com/ja-jp/cc936656.aspx#sh …
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報