フィールドを利用して図表番号を挿入するプログラムです。
昨日コメントをいただいたので、新しく記事にすることにしました。
以前書いたこちらの記事
に多少手を加えて、再度掲載します。
なお、上記記事でいただいたコメント
への回答は、のちほどブログ記事にいたします。
さて、今回紹介するのは、図番の挿入マクロと、図番を相互参照するマクロです。
図番の相互参照って何?という方、PCOnlineの以下の記事をご参照ください。
図表番号を振る(5)~本文に番号を埋め込む
Wordの便利機能の一つです。
▼作成背景
ワードで文書をつくるときに図1,図2,図3,、、と図を表示する場合があります。
ところが、文書を作っているある時点で、図2と図3の間に別の図を入れることってありますよね。
そのときに、現在の図3以降の全ての図の番号を振り直すのは非常に手間です。
最近は、マクロの取説を丁寧に書いています。
たとえば、右クリックでGoogle!
の取説はかなり時間をかけて書きましたし、まだ公開していないマクロの取説もけっこう気合い入れて書いたりしています。
このようなマニュアルは、バージョンアップで機能を追加するたびに、説明および説明図を追加しています。
そうすると、上記のような図の番号をふり直す作業があまりにも面倒なために何かよい方法がないかと思って作ったのがこのマクロです。
「連番のフィールド」を使えば、図3以降の図番のずれを全て自動で修正してくれます。
また、「相互参照のフィールド」を使えば、「図4に示すように」などの参照して書かれた文章も、新しい図を挿入して図番が「4」から「5」にずれた場合に「図5に示すように」と自動で更新してくれますので非常に便利です。
▼参照した資料
「エンジニアのためのWord再入門講座
」です。
文章を書くときの目的にそって、細かなワードの設定・使い方が説明されている良書です。
本書のP.103~108の記事を参考にしてマクロを記録し、その後自分の利用方法に沿ったプログラムに修正しました。
最終的には、ヘルプをみてプログラムを作成しました。
以下のプログラムをツールバーのボタンに登録すると作業がかなり楽になります。
▼できることイメージ
図番が入力されています。
このとき、赤○で囲んだ中央の図3は、赤○で囲んだ文中の図3と相互参照されています。
上記イメージにて、図2の下の行にカーソルを置いて「図番挿入」マクロを実行。
青□(あおしかく)で囲まれた3カ所に注目!!
カーソル位置に「図3 」が挿入されて、以下の図3,図4の番号が図4,図5に自動でふられます。
また、赤○のように、相互参照されていた「図3」の文字も、ふり直された図番に対応して「図4」に変更されました。
なかなかの力作です(笑)。
▼プログラム1. 図番を挿入するマクロ
できること:カーソル位置に応じて、適切な図番を挿入します。
Sub 図番挿入()
10 Selection.InsertCaption _
Label:="図"
20 Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
30 Selection.TypeText Text:=" "
40 ActiveDocument.Fields.Update
End Sub
▼プログラム1. 図番を挿入するマクロの説明
10行:InsertCaptionで、図番を挿入します。
自動記録をすると、様々なプロパティが記録されますが、今回はLabelというプロパティだけ必要なので、その他のプロパティは削除しました。
20行:中央揃え
30行:図○のあとに全角スペースを挿入(これは、私が書いているマニュアルのスタイルです)
40行:フィールドの数値の更新。これをやらないと、相互参照した図番が更新されません。重要。
▼プログラム2. 指定した図番を相互参照するマクロ
できること:表示されるインプットボックスに番号を入力して、図番をその参照先の図に対応させます。
相互参照の意味は、上記のPCOnlineの記事をご覧ください。
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
▼プログラム2. 指定した図番を相互参照するマクロの説明
20行~40行:参照したい図番を入力
50行:フィールドを挿入
60行:フィールドの更新
※図番の相互参照_Error (エラー処理について)
上記の通り、20行~40行にてinputboxで参照先の図の番号を指定します。
この際に、指定した図番の図が文書中に存在しない場合(参照先がない図番を指定した場合)に、エラー番号4198が出て、エラー処理されます。