【Word VBA】図表番号を挿入するWordマクロ(Seqフィールドの利用)

2009年8月30日

フィールドを利用して図表番号を挿入するプログラムです。

紹介するのは、図番の挿入マクロと、図番を相互参照するマクロです。

作成背景

ワードで文書をつくるときに図1,図2,図3,、、と図を表示する場合があります。

ところが、文書を作っているある時点で、図2と図3の間に別の図を入れることってありますよね。

そのときに、現在の図3以降の全ての図の番号を振り直すのは非常に手間です。

いま、マクロの取説を書いているのですが、上記のような作業があまりにも面倒だったために何かよい方法がないかと思って作ったのがこのマクロです。

「連番のフィールド」を使えば、図3以降の図番のずれを全て自動で修正してくれます。

また、「相互参照のフィールド」を使えば、「図4に示すように」などの参照して書かれた文章も、図番を挿入してずれた場合に「図5に示すように」と更新してくれますので非常に便利です。

参照した資料

エンジニアのためのWord再入門講座」です。

文章を書くときの目的にそって、細かなワードの設定・使い方が説明されている良書です。

本書のP.103~108の記事を参考にしてマクロを記録し、その後自分の利用方法に沿ったプログラムに修正しました。

最終的には、ヘルプをみてプログラムを作成しました。

以下のプログラムをツールバーのボタンに登録すると作業がかなり楽になります。

ボタンの作成方法は、こちら

プログラム

「図番挿入」と「図番の相互参照」の二つのプログラムがあります。


Sub 図番挿入()

10  Selection.InsertCaption _
   Label:="図"

20  Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

30  Selection.TypeText Text:=" "

40  ActiveDocument.Fields.Update
      
End Sub

Sub 図番の相互参照()

   Dim Message As String
   Dim Title As String
   Dim MyValue As Integer

10   On Error GoTo 図番の相互参照_Error

   'メッセージ、タイトルの設定
20  Message = "図面番号を入力してください。"
30  Title = "図の相互参照"

   ' 図番を取得するインプットボックスを表示
40  MyValue = InputBox(Message, Title)

50  Selection.InsertCrossReference ReferenceType:="図", _
   ReferenceKind:=wdOnlyLabelAndNumber, _
   ReferenceItem:=MyValue

60  ActiveDocument.Fields.Update

70   On Error GoTo 0
80   Exit Sub

図番の相互参照_Error:

90    If Err = 4198 Then End

End Sub

プログラム解説

<図番挿入のプログラム>

10行:InsertCaptionで、図番を挿入します。

自動記録をすると、様々なプロパティが記録されますが、今回はLabelというプロパティだけ必要なので、その他のプロパティは削除しました。

20行:中央揃え

30行:図○のあとに全角スペースを挿入(これは、私が書いているマニュアルのスタイルです)

40行:フィールドの数値の更新。これをやらないと、相互参照した図番が更新されません。重要。

<図番の相互参照>

20行~40行:参照したい図番を入力

50行:フィールドを挿入

60行:フィールドの更新

※図番の相互参照_Error (エラー処理について)

上記の通り、20行~40行にてinputboxで参照先の図の番号を指定します。

この際に、指定した図番の図が文書中に存在しない場合(参照先がない図番を指定した場合)に、エラー番号4198が出て、エラー処理されます。

-コード
-, ,