【Word VBA】特許明細書の段落番号を連番にする

2012年9月24日

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

-コード
-, ,