先日の大阪のWordマクロセミナーにてご質問をいただきましたのでヒントとして掲載します。
特許明細書では、段落番号が4桁で墨付き括弧で記載されます。
例えば、1~200段落まである場合には、【0001】からはじまり、【0200】となります。
途中で段落を追加すると、この段落番号の連番を書き換える必要があり、大変面倒です。
特許事務所によっては、フィールドコードで処理をしていたり、番号書式を使って自動で入力したりしています。
今回紹介するマクロでは、通常のとおりテキストで入力した段落番号を連番に書き換えます。
<目次>
このマクロでできること
段落番号を連番にします。
カーソルの位置はどこでもかまいません。
実行すると、段落先頭に記載された段落番号が連番になります。
処理前
処理後
マクロの解説
マクロの記録で得られるコードを中心にして作ってみました。
このような処理はいろんな方がマクロを作っているので、書き方はいろいろあると思います。
1つの例としてご覧ください。
ワイルドカードで検索します。
"^13【[0-90-9@]{4}】"
特許明細書の墨付き括弧の段落番号を探します。
数字は半角でも全角でもかまいません。
また、途中で追加する段落番号は【@@@@】として入れても大丈夫です。
4桁数字に変換するのは、Format関数を用いました。
また、全角数字にする必要があるので、StrConv関数を用いています。
マクロ
Sub 段落先頭の段落番号を連番にするマクロ() Dim i As Long Dim myNumber As String '墨付き括弧付きの4桁の全角段落番号 'カーソルを先頭へ Selection.HomeKey Unit:=wdStory '段落先頭の段落番号を検索する条件を設定 Selection.Find.ClearFormatting With Selection.Find .text = "^13【[0-90-9@]{4}】" .Replacement.text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With '検索実行 Selection.Find.Execute '連番の初期値を設定 i = 1 '段落先頭の段落番号が見つかる間実行する Do While Selection.Find.Found = True '全角で段落番号を入力 myNumber = "【" & StrConv(Format(i, "0000"), vbWide) & "】" Selection.TypeText text:=vbCr + myNumber '次を検索 Selection.Find.Execute 'i の値を1つ増加 i = i + 1 Loop End Sub