テキストを自動的に修正する
ヘッダ部分など、共通の単語、文章を全ページに渡って表示したい場合がある。
そんな時Excelなら、「=Sheet1!.A1」などとすれば、Sheet1シートのA1セルの文字列が表示されるわけだけど、Visioでこれと同じようなことをするのは結構大変である。
# 実は簡単な方法があって、それを私が知らないだけかもしれないけど・・
- Visioを起動し、新規文書を作成する(デフォルトでは「ページ - 1」が作成されているハズ)
- 「ページ - 1」上に、四角形ツールで一つ四角形を作成します
- その四角形を「右クリック」→「書式」→「オブジェクト情報」とします
- 「名前」欄に「Sheet.1」などと表示されているので、「MasterMyText」と変更します
- ページの挿入を行います(ページ名は「ページ - 2」となるハズ)
- 「ページ - 2」上にも四角形ツールで一つ四角形を作成します
- 同じようにオブジェクト情報を選択し、名前を「MyText」と変更します
- Alt+F11で、マクロエディタを開きます
- プロジェクトエクスプローラのThisDocumentをダブルクリックします
- 要素のテキストが変更された時に呼ばれるCallBack関数を作成します(以下のコードをコピペしてください)
Private Sub Document_ShapeExitedTextEdit(ByVal Shape As IVShape)
On Error Resume Next
If Shape.Name = "MasterMyText" Then
Dim shpObj As Visio.Shape
Dim pageObj As Visio.PageFor Each pageObj In ActiveDocument.Pages
Set shpObj = pageObj.Shapes.Item("MyText")
If Not shpObj Is Nothing Then
shpObj.Text = Shape.Text
End If
Next
End If
End Sub
これで、「ページ - 1」に作成したテキストボックスの内容を変更すれば、「ページ - 2」に作成したテキストボックスも変更されるようになります。Visioばんざい。