« メルマガの登録 | トップページ | Wordでテキパキ 定型処理&日常業務 (書籍紹介) »

2009年8月30日 (日)

図表番号を挿入する(Seqフィールドの利用)

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

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

▼作成背景

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

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

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

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

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

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

▼参照した資料

エンジニアのための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が出て、エラー処理されます。

|

« メルマガの登録 | トップページ | Wordでテキパキ 定型処理&日常業務 (書籍紹介) »

マクロプログラム」カテゴリの記事

コメント

はじめまして。
最近、ワードマクロに関心を抱きはじめ、御ブログを参考にしております。

ところで、「図(表)番の相互参照()」マクロに追加して欲しい機能があります。

1.現状では、数字の半角・全角が混在可能なので、
これをどちらか(原則として半角)に強制変換希望。

2.入力ボックスが長すぎるので、5桁くらいが入力できる程度の長さ(1.5センチくらい?)希望。
画面自体も、半分くらいの大きさでよいと思います。

3.右側に▲▼で数字を増減するコントロール(有効範囲は1以上)希望(直入力との併用)。


それと、参照先の図をあとから削除したり、または増やしたりすると、
リンク元との同期がとれなくなってしまいます。
これに対処することは可能でしょうか?

【参照先】 【リンク元】
図1(´∀`*) →図1を参照
図2( ゚д゚)、 →図2を参照
図3(`ー´) →図3を参照

↓図2を削除して、F9更新すると...

図1(´∀`*) →図1を参照
削除 →図2を参照
図2(`ー´) →図3を参照 ←ずれる∑(゚Д゚)ハッ


ご検討いただければ幸いです。

投稿: 仕様改善希望 | 2011年1月17日 (月) 13時23分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 図表番号を挿入する(Seqフィールドの利用):

« メルマガの登録 | トップページ | Wordでテキパキ 定型処理&日常業務 (書籍紹介) »