• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:《Word2000》自動で振った段落番号を、一括で手打ちの番号に入力し直すには)

Word2000 自動で振った段落番号を一括で手打ちの番号に入力し直す方法

このQ&Aのポイント
  • Word2000で自動で振られた段落番号を一括で手打ちの番号に入力し直したい場合の方法を教えてください。
  • 現在の文書は果物の名前を章タイトルとしており、それぞれの章に自動的に段落番号が振られています。
  • 他人が作ったファイルでページ数も多く、一つ一つ見ていくのは確実ですが見落としの可能性があるため、機械的な方法を希望しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

自動記録の手も借りて修正作成しましたので、不要な行が入っていると思いますが.....。 見出しレベルが二段階までという前提です。 前回同様、最後にブックマーク E を作成して実行してください。 Sub ChgStyle()  Dim LstPR1, LstPR2, ListST, STT  If ActiveDocument.ListParagraphs.Count = 0 Then Exit Sub  With ActiveDocument.Bookmarks   If Not .Exists("E") Then Exit Sub  End With  Selection.HomeKey Unit:=wdStory  Do While Selection.Range.ListFormat.ListValue = 0   Selection.MoveDown Unit:=wdLine, Count:=1   Selection.HomeKey Unit:=wdLine  Loop  STT = ActiveDocument.Range(0, Selection.Start).ComputeStatistics(wdStatisticLines)  LstPR1 = 0  Do Until Selection.Range.Bookmarks.Exists("E")   Selection.MoveRight Unit:=wdCharacter, Count:=1   LstPR2 = ActiveDocument.Range(0, Selection.Start).ListParagraphs.Count   ListST = Selection.Range.ListFormat.ListString   Selection.HomeKey Unit:=wdLine   If LstPR2 <> LstPR1 Then    Selection.TypeText Text:=ListST    Selection.HomeKey Unit:=wdLine   End If   LstPR1 = LstPR2   Selection.MoveDown Unit:=wdLine, Count:=1  Loop  '  Selection.GoTo What:=wdGoToLine, Count:=4  ActiveDocument.Range(Start:=Selection.End, End:=ActiveDocument.Bookmarks("E").End).Select  With ListGalleries(wdOutlineNumberGallery).ListTemplates(7).ListLevels(1)   .NumberFormat = "%1"   .TrailingCharacter = wdTrailingNone   .NumberStyle = wdListNumberStyleNone   .NumberPosition = MillimetersToPoints(0)   .TextPosition = MillimetersToPoints(7.5)   .TabPosition = wdUndefined  End With  With ListGalleries(wdOutlineNumberGallery).ListTemplates(7).ListLevels(2)   .NumberFormat = "%2"   .TrailingCharacter = wdTrailingNone   .NumberStyle = wdListNumberStyleNone   .NumberPosition = MillimetersToPoints(7.5)   .TextPosition = MillimetersToPoints(15)   .TabPosition = wdUndefined  End With  ListGalleries(wdOutlineNumberGallery).ListTemplates(7).Name = ""  Selection.Range.ListFormat.ApplyListTemplate ListTemplate:=ListGalleries( _   wdOutlineNumberGallery).ListTemplates(7), ContinuePreviousList:=True, _   ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:=wdWord9ListBehavior End Sub

その他の回答 (3)

回答No.4

私の環境も 2000 です。 前回言い訳させていただいたように、真ん中ほどの Loop 以下は自動記録の手を借りた 部分なのですが、そちらでなぜ止まるのかわかりません。 ご質問内に書かれていた例文からは、[書式]-[箇条書きと段落番号] のアウトラインを 設定されているはずなのですし....... ? とりあえず、  .NumberFormat = "%1" の行を削除してみてください。(8行下にもありますので、これも削除) 私のテスト実行では、削除しても同じように動きました。 また、  .TabPosition = wdUndefined も2つとも削除。 ついでに、一番下の方にある  ListGalleries(wdOutlineNumberGallery).ListTemplates(7).Name = "" も削除してください。 自動記録で付けられた不要行のようです。 これでも止まってしまう場合は、真ん中の Loop より下を Exit Sub の前まで削除して 実行し、その後アウトラインスタイルの変更を手作業で行なってください

bari_saku
質問者

お礼

本当にありがとうございます! まだ動きが微妙なのですが、VBAの勉強も兼ねて、色々いじってみたいと思います。

回答No.3

#2の修正です。 プログラムの中央ほどにある(Loop のすぐ下)  Selection.GoTo What:=wdGoToLine, Count:=4 を  Selection.GoTo What:=wdGoToLine, Count:=STT に変更してください。 テスト時の状態のまま載せてしまいました。  /(-_-;

bari_saku
質問者

お礼

すみません、再びこんなに長いVBA書いていただきまして… テストしてみましたところ、「実行時エラー5974 箇条書きの書式のプレースホルダとして、番号を指定することはできません」と出ます。 デバッグは、Loopの数行下の .NumberFormat = "%1" の位置で止まっております。ハテ? エクセルのバージョンの違いか何かでしょうか?(当方2000です)

回答No.1

自信はないのですが、とりあえず、文章のレイアウトを勝手に仮定して、マクロを作って みました。  1.項目1  (Tab)本文1行目  (Tab)本文2行目  2.項目2  (Tab)本文1行目 のようになります。 [Alt]+[F11] で開く画面の左側のツリーにある Project(開いている文書名) を選択して [挿入]-[標準モジュール] で更に開く画面に下記をコピーし、通常画面に戻ってください。 Sub Test()   Dim PG, LV, LVSeq, NumberSize   If ActiveDocument.ListParagraphs.Count = 0 Then Exit Sub   With ActiveDocument.Bookmarks     If Not .Exists("E") Then Exit Sub   End With   PG = ActiveDocument.ComputeStatistics(Statistic:=wdStatisticLines)   Selection.HomeKey Unit:=wdStory   LVSeq = 0   Do While Selection.Range.ListFormat.ListValue = 0     Selection.MoveDown Unit:=wdLine, Count:=1     Selection.HomeKey Unit:=wdLine   Loop   Do Until Selection.Range.Bookmarks.Exists("E")     Selection.HomeKey Unit:=wdLine     LV = Selection.Range.ListFormat.ListValue     If LV = 1 Then       LVSeq = LVSeq + 1       If LVSeq > 9 Then NumberSize = LVSeq Else NumberSize = StrConv(LVSeq, vbWide)       Selection.TypeText Text:=NumberSize & "."       Selection.Range.ListFormat.RemoveNumbers NumberType:=wdNumberParagraph     Else       Selection.TypeText Text:=vbTab     End If     Selection.MoveDown Unit:=wdLine, Count:=1   Loop   Selection.HomeKey Unit:=wdStory End Sub 文章の最後の段落番号項目の「本文」の最後の行の次行先頭に E という名前のブックマークを 挿入してから、[ツール]-[マクロ]-[マクロ] の Test を選択して実行してみてください。 文書ファイルのコピーで行なってくださいね。 結果が求められているものと異なっていたら、無視してください。   ^_^;

bari_saku
質問者

お礼

どうもありがとうございます! これなら確かに置き換わります。 ただ非常に恐縮なのですが、 ・本文先頭のタブを抜く ・違った形式の段落番号があっても、最初のスタイルが適応されてしまう。単純に、コピペで置き換えたい 以上の処理は可能でしょうか? ※現在このような文書だった場合、 1.見出し1(段落番号)   本文 2.見出し2(段落番号)   本文  A.小見出しA(段落番号)   本文  B.小見出しB(段落番号)   本文 3.見出し3(段落番号) ↓このように置き換えられてしまいます。 1.見出し1  (Tab)本文 2.見出し2  (Tab)本文  3.小見出しA  (Tab)本文  4.小見出しB  (Tab)本文 5.見出し3 ↓単純にこのようにするのは、難しいでしょうか。 1.見出し1   本文 2.見出し2   本文  A.小見出しA   本文  B.小見出しB   本文 3.見出し3 もし難しい場合は、どうかスルーして下さい。 ここまでやって頂いて、本当に感謝しております。

関連するQ&A