図形(丸や四角など)を描く方法

VBA

四角とか丸とかって描き方教えて~

そうだよね、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~の部分を変えると、いろんな図形が描けるよ

図形を描く命令の一覧表

図形メソッドパラメータ
四角形DrawRectangleX1,Y1,X2,Y2
楕円DrawOval X1,Y1,X2,Y2
DrawLine Xs,Ys,Xe,Ye
円弧DrawCircularArcXc,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

実行結果

ページをクリックすると、そこに丸が描けると思います。

こんなのあったら嬉しい場面って結構あるかも

タイトルとURLをコピーしました