Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


568 / 886 ←次へ | 前へ→

【324】Re:複数の見出しの設定
回答  H. C. Shinopy  - 05/8/16(火) 22:32 -

引用なし
パスワード
   残暑お見舞い申し上げます。

まず、マクロ処理の前提として、
文書の先頭から末尾まで検索したらそれで処理を終わること、
「◎」が行の先頭・途中・末尾のどこかにあるということにします。

マクロの記録では、「.Wrap = wdFindContinue」となり、
検索・置換の内容によっては、処理が無限ループに陥ります。
これが、tootsieさんを困惑させている原因です。

ヘルプで「Wrap」を調べると、次のような説明が表示されます。
wdFindAsk 選択範囲または指定範囲を検索し、
 文書の残りの部分も検索するかどうかをたずねるメッセージを表示します。
wdFindContinue 検索範囲の先頭または末尾まで検索し、さらに検索を続けます。
wdFindStop 検索範囲の先頭または末尾まで検索したら、検索を終了します。

「.Wrap = wdFindStop」を指定すれば、文書の末尾まで検索すると、
Do〜Loop内の「If Not .Found Then Exit Do」で
処理を終わらせることができます。

Sub myStyle1()
 ' 文書の先頭から末尾まで「◎」を検索する。
 ' 見出し1を設定する。
 Selection.HomeKey Unit:=wdStory
 Selection.Find.ClearFormatting
 '
 With Selection.Find
  .Text = "◎"
  .Forward = True
  .Wrap = wdFindStop ' wdContinueではなく…
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchFuzzy = False
  .MatchWildcards = False
  Do
   .Execute
   If Not .Found Then Exit Do
   '
   Selection.HomeKey Unit:=wdLine, Extend:=wdMove
   Selection.MoveDown Unit:=wdLine, Extend:=wdExtend
   '
   Selection.Style = ActiveDocument.Styles("見出し 1")
   Selection.Collapse wdCollapseEnd
  Loop
 End With
End Sub


また、ヘルプでStyleを調べてみたら、
次のような例が出てきました。御参考までに。

Sub myStyle2()
 ' 次の使用例は、
 ' 作業中の文書の "第 " という語から始まる各段落に
 ' [見出し 1] スタイルを適用します。
 '
 For Each para In ActiveDocument.Paragraphs
  If para.Range.Words(1).Text = "第 " Then
    para.Style = ActiveDocument.Styles(wdStyleHeading1)
  End If
 Next para
End Sub
1,697 hits

【323】複数の見出しの設定 tootsie 05/8/16(火) 13:25 質問
【324】Re:複数の見出しの設定 H. C. Shinopy 05/8/16(火) 22:32 回答
【325】Re:複数の見出しの設定 tootsie 05/8/17(水) 16:15 お礼

568 / 886 ←次へ | 前へ→
ページ:  ┃  記事番号:
207140
(SS)C-BOARD v3.8 is Free