- ベストアンサー
VISIOでVBAを使っての図形描画
- VISIOで自動で図形を描画するVBAを作成しております。テキストからのデータの取得、取得したデータにしたがっての、長方形の作図、線の作成は出来ました。
- しかし、取得した座標を使っての図形の描画(例:三角形、中が塗れるやつ)が上手くできません。
- マクロの自動記録では1個の三角形を書くマクロが生成され、目的のような使い方は出来ませんでした。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
私はVISIOを持っていません(かつて職場で少し使った程度)VBAの経験はありません。しかしPPTの例を http://msdn.microsoft.com/ja-jp/library/aa157690.aspx エクセルに書き直すと、三角形作成と内部色を、つける点で旨く行きました。 フリーフォームを使うやり方です。 もし参考になれば。 フリーフォームを使うまでもないとか、少し変えてもうまく行きそうに無ければ、下記を無視してください。 ーー エクセルの例 三角形を描く 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.aspxほか http://msdn.microsoft.com/ja-jp/cc936656.aspx#shape01_3