Visioのオブジェクトモデル
Visioでマクロ組んでなんか作業をするには、まずこの図を頭に思い浮かべたほうがわかりやすいかもしれない。
http://www.interq.or.jp/chubu/r6/visio/DVS_OMP.htm
図を見ればわかると思うけど、重要なとこだけ簡単に説明しておくと
- 一番トップにVisio本体(Application)がいて
- Applicationは複数のドキュメント(Documents)を持っており
- 各ドキュメント(Document)は複数のページ(Pages)を持っていて
- 各ページ(Page)には図形(Shapes)が含まれ、
- 各図形(Shape)ごとに固有のデータを持っている
- 各ページ(Page)には図形(Shapes)が含まれ、
- 各ドキュメント(Document)は複数のページ(Pages)を持っていて
- Applicationは複数のドキュメント(Documents)を持っており
ということになる。
具体的に例を挙げると、Visioを起動して、新規ドキュメントを作成し、線やら四角やらを描いて、適当なファイル名で保存して、以下のマクロを実行してみよう
Option ExplicitSub 親子関係()
'// 宣言部分
Dim vis_app As Visio.Application
Dim vis_docs As Visio.Documents
Dim vis_doc As Visio.Document
Dim vis_pages As Visio.Pages
Dim vis_page As Visio.Page
Dim vis_shapes As Visio.Shapes
Dim vis_shape As Visio.Shape
'// こっからそれぞれのオブジェクトをセットしていく
Set vis_app = Application
'// ドキュメント
Set vis_docs = vis_app.Documents
For Each vis_doc In vis_docs
MsgBox "ドキュメント名:" & vis_doc.Name
Set vis_pages = vis_doc.Pages
For Each vis_page In vis_pages
MsgBox "ページ名:" & vis_page.Name
Set vis_shapes = vis_page.Shapes
For Each vis_shape In vis_shapes
MsgBox "図形名:" & vis_shape.Name
Next
Next
Next
End Sub
大体感触がつかめただろうか?