|
残暑お見舞い申し上げます。
まず、マクロ処理の前提として、
文書の先頭から末尾まで検索したらそれで処理を終わること、
「◎」が行の先頭・途中・末尾のどこかにあるということにします。
マクロの記録では、「.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
|
|