Word (VBA)

Word VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Word 2013)
置換 選択したパラグラフ内のみで実行するには…
投稿日時: 18/07/04 01:25:21
投稿者: takaisasking

選択範囲のみの文字を置換する方法について
 
やりたいことは
「.」→「。」と「,」→「、」に置換する
ただし、選択範囲のみ(パラグラフや1行のみなど)の置換です。
下記のコートではページ全体の文字を置換してしまいます。
 
下の記述をどのように直したらよいでしょうか。
以上、よろしくお願いします。
 
【VBAコード】
 
With Selection.Find
        .Text = "."
        .Replacement.Text = "。"
        .Forward = True
        .Wrap = wdFindContinue
        .Execute Replace:=wdReplaceAll
    End With
    
    With Selection.Find
        .Text = ","
        .Replacement.Text = "、"
        .Forward = True
        .Wrap = wdFindContinue
        .Execute Replace:=wdReplaceAll
    End With

回答
投稿日時: 18/07/04 08:41:18
投稿者: んなっと

マクロ記録して、一部分を修正するだけです。
 
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
    .Text = "."
    .Replacement.Text = "。"
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
 
 ↓修正
 
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
    .Text = "."
    .Replacement.Text = "。"
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
 
Selectionを使ったコードの場合は、直前に行った手作業による検索・置換の影響を受けるので
面倒でも .MatchWildcards などの各種プロパティも指定したほうが安全だと思います。

投稿日時: 18/07/04 17:32:35
投稿者: takaisasking

んなっと さん、どうもありがとうございました。
解決できました。
また、
 .MatchWildcards などの各種プロパティも指定したほうが安全だと思います。
の アドバイスも助かりました。
ありがとうございました。
また、よろしくお願いします。