[MS Word/OOo Writer] ユースケースシナリオ(以下UCS)をWordかWriterで作成します。

各UCSごとに、一意なユースケース番号(例: UC00001, UC0002, ...)を付与するんですけど、これを自動的にやる方法はありませんか。
WordやWriterには、図表番号を自動で更新してくれる仕組みがありますけど、これのように、文書に現れる順番に希望のフォーマットでナンバリングしてくれ、UCSの追加、削除、順番変更に伴って自動的に番号を更新してくれる、さらに参照ができれば言うこと無し―――そんなことができないものでしょうか。

MS WordとOOo Writerのそれぞれの実現方法を教えてください。どちらか一方でも結構です。
ちなみに私のWordはバージョンが "Word2000" でして、これで実現できればとても助かります。

回答の条件
  • 1人2回まで
  • 登録:2008/07/08 17:29:00
  • 終了:2008/07/13 18:38:20

ベストアンサー

id:airplant No.2

airplant回答回数220ベストアンサー獲得回数492008/07/12 01:24:18

ポイント65pt

変更箇所特定のやり方として「青のボールドでUC[0-9]+」を探して、それにシーケンシャル番号をつけるマクロを作ってみました。

Option Explicit

Sub SetAutoNumber()

    Dim i As Integer
    
    ' 先頭行にする
    Selection.GoTo What:=wdGoToLine, _
        Which:=wdGoToFirst, Count:=1, Name:=""
    i = 1
    ' 検索パラメータ
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "UC[0-9]{1,}"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .Font.Color = wdColorBlue
        .Font.Bold = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchFuzzy = False
        .MatchWildcards = True
    
        Do While .Execute
            .Replacement.Text = "UC" & Format(i, "0000")
            .Execute Replace:=wdReplaceOne
            Selection.Collapse Direction:=wdCollapseEnd
            i = i + 1
        Loop
    End With

End Sub

Word 2003しか手元になかったので、2000の場合は少し変更する必要あるかも知れません。

→もし、プロパティが2003専用の場合は、エラーになるので、マクロの記録で検索パターン指定してみて、適宜変更ください。

なお、スタイルで検索する手段もあると思います。

参照で使うハイパーリンクのテキストは、UC0001のような番号を直接記載せずに「こちら」みたいに別テキストを記載する前提です。

id:room661

id:airplantさん、ありがとうございます。

いま環境が手元になく試すことが出来ないのが残念ですが、いちはやく試してみたいと思います。

2008/07/13 18:37:16

その他の回答(1件)

id:airplant No.1

airplant回答回数220ベストアンサー獲得回数492008/07/09 00:17:29

ポイント35pt

Wordでの処理です。

既にご存知とは思いますが、スタイルを使って箇条書きで自動的に番号を振る手があります。

ただし、フォーマットはUC1, UC2,,, UC10のように左0を外した番号になります。

サンプル

http://sharp-pcstudio.com/disp.asp?cno=5&tbno=0&dno=128


書式を設定できるのは、フィールドですが、自動更新は無理と思います。

結論として、Wordではマクロを使わない限り上記のように自由な書式で自動連番を振ることは無理と思います。


マクロを使えば、特定文字列をUCとみなして上から順に番号を振りなおす事はできます。

ただし、この場合でも1つ削ったらマクロを動かすなどの操作が必要です。保存時に振りなおしでいいのであれば、都度動かす必要はありません。

id:room661

ご回答ありがとうございます。

そうですか、Wordには自由連番の機能が備わってないのですね。

もしマクロで実現するとしたら、どのような処理を書くのでしょうか。

  1. 文書中の特定文字列を検索
  2. "UC0000" + str(i++) で上書き
  3. 1. に戻る

みたいな感じでしょうか。

——————

OOo Writerではいろんな種類の連番を一つの文書に共存することができそうなのですが、これを利用して希望の連番機能を実現できないものでしょうか。引き続き回答をお待ちしています。

2008/07/09 00:29:27
id:airplant No.2

airplant回答回数220ベストアンサー獲得回数492008/07/12 01:24:18ここでベストアンサー

ポイント65pt

変更箇所特定のやり方として「青のボールドでUC[0-9]+」を探して、それにシーケンシャル番号をつけるマクロを作ってみました。

Option Explicit

Sub SetAutoNumber()

    Dim i As Integer
    
    ' 先頭行にする
    Selection.GoTo What:=wdGoToLine, _
        Which:=wdGoToFirst, Count:=1, Name:=""
    i = 1
    ' 検索パラメータ
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "UC[0-9]{1,}"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .Font.Color = wdColorBlue
        .Font.Bold = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchFuzzy = False
        .MatchWildcards = True
    
        Do While .Execute
            .Replacement.Text = "UC" & Format(i, "0000")
            .Execute Replace:=wdReplaceOne
            Selection.Collapse Direction:=wdCollapseEnd
            i = i + 1
        Loop
    End With

End Sub

Word 2003しか手元になかったので、2000の場合は少し変更する必要あるかも知れません。

→もし、プロパティが2003専用の場合は、エラーになるので、マクロの記録で検索パターン指定してみて、適宜変更ください。

なお、スタイルで検索する手段もあると思います。

参照で使うハイパーリンクのテキストは、UC0001のような番号を直接記載せずに「こちら」みたいに別テキストを記載する前提です。

id:room661

id:airplantさん、ありがとうございます。

いま環境が手元になく試すことが出来ないのが残念ですが、いちはやく試してみたいと思います。

2008/07/13 18:37:16
  • id:airplant
    1.文書中の特定文字列を検索
    2."UC" + format(str(i++),"0000") で上書き
    3. 1. に戻る
    になると思います。"UC0000"+str(i++)でいいのであれば、wordでもできます。
    UC00001,UC00002,・・・UC000010

    上のマクロを作るのはそれほど難はないのですが、番号を振った後で変更はあるでしょうから、それをどうするかが問題です。
    UC00001のような形式をもう一度検索してそれらを再度ナンバリングしてもいいですが、そうすると文章中の物も変わってしまいますので、、、

    OOo Writerというものではできるようなので、そちらのヘルプを見て実現してはいかがでしょうか?
  • id:room661
    id:airplant さん、ご回答ありがとうございます。
    マクロ作ってみようと試みたんですが、一括置換するコマンドがあるというのは分かったんですけど、それではなくて、行単位で該当文字列を検索・置換・次の行へ・・・、というものがどうしても見つかりませんで滞ってます。
    OOoでも模索中ですけど、やはりこちらは慣れがない分、難儀してます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません