先日の大阪の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







