四角とか丸とかって描き方教えて~
そうだよね、Visioで図形描けないと始まらないもんねっ
Visioって作図用のアプリなので、まずは図を描いてみたいですよね?図形1個描くだけなら手で描きますが、いろいろ組み合わせて自動化したい場面っていっぱいあると思います。ということで今回は丸や四角をVBAで描く方法をご紹介します。
四角形を描く方法
まずはこんな四角形を描く場合を例にご紹介していきます。
X,Yは左下原点で既定の単位がインチ、この辺はこちらを参照下さい。
構文
四角形を描く構文はこれ。
DrawRectangle(X1, Y1, X2, Y2)
※単位はインチ
Sample
コード
Sub test1() '四角形を描きます。 Set shp = ActivePage.DrawRectangle(1, 9, 2, 8) End Sub
実行結果
ページ上に四角形が現れたと思います。
四角形以外の図形を描く方法
Draw~を変えると色々描ける
Draw~の部分を変えると、いろんな図形が描けるよ
図形を描く命令の一覧表
図形 | メソッド | パラメータ |
四角形 | DrawRectangle | X1,Y1,X2,Y2 |
楕円 | DrawOval | X1,Y1,X2,Y2 |
線 | DrawLine | Xs,Ys,Xe,Ye |
円弧 | DrawCircularArc | Xc,Yc,半径,THs(省略可),THe(省略可) |
コード
Sub test2() '四角を描きます。 set Rect = ActiveWindow.Page.DrawRectangle(1, 9, 2, 8) '丸を描きます。 set Ovl = ActiveWindow.Page.DrawOval(1, 7, 2, 6) '線を描きます。 set Li = ActiveWindow.Page.DrawLine(1, 5, 3, 5) '円弧を描きます。 set Cir = ActiveWindow.Page.DrawCircularArc(1.8, 3, 0.8) End Sub
四角、円、線、円弧を縦に並べて描いてみました。
構文は四角形の時と同じ、円弧は開始角度、終了角度を省略すると半円になります。
実行結果
四角、丸、線、円弧が描けたと思います。
次はページをクリックする度に丸を描く方法
コード
こちらページ上をクリックすると小さな円が描けるコードです。
まずクラスモジュールに「MouseListener」という名前でモジュールを1つ作ります。
Dim WithEvents vsoWindow As Visio.Window Private Sub Class_Initialize() Set vsoWindow = ActiveWindow End Sub Private Sub Class_Terminate() Set vsoWindow = Nothing End Sub
次にThisDocumentにこんなコードを描きます。
Dim myMouseListener As MouseListener Private WithEvents mywin As Visio.Window Private Sub Document_BeforeDocumentClose(ByVal doc As IVDocument) Set myMouseListener = Nothing End Sub Sub DrawWin() Set mywin = ActiveWindow End Sub Private Sub mywin_MouseDown(ByVal Button As Long, ByVal KeyButtonState As Long, ByVal x As Double, ByVal y As Double, CancelDefault As Boolean) ActiveWindow.Page.DrawOval x, y, x - 0.2, y - 0.2 End Sub
実行結果
ページをクリックすると、そこに丸が描けると思います。
こんなのあったら嬉しい場面って結構あるかも