- 締切済み
全角の空白と半角の空白を区別して置換したい
次のようなテキストデータに含まれる制御コードと空白を別の印刷可能な記号にワードのマクロを使って置換したいのですが、全角の空白と半角の空白を区別して置換したいのですが、全角の空白は半角の空白2個に認識してしまって、困っています。どのような書き方をすれば全角の空白を先に認識して■に置換できるのでしょうか?マクロのソースは最後に添えておきます。VABは勉強したことがないので、記録したマクロのソースをいじくっているだけですので初歩的な質問で恐縮ですが教えていただければ大変助かります。 ----(置換前) あいうえを かきくけこ さしすせそ たちつてと なにぬねの はまやらわ いきしちに ひみいりい わをん はひふへほ まみむめも やいゆえよ らりるれろ あいうえを かきくけこ さしすせそ たちつてと なにぬねの はまやらわ いきしちに ひみいりい わをん はひふへほ まみむめも やいゆえよ らりるれろ ----(終わり) ----(置換後) あいうえを~~かきくけこ△ さしすせそ~~たちつてと△ なにぬねの~はまやらわ△ いきしちに~~ひみいりい△ わをん△ [改頁] はひふへほ~まみむめも△ やいゆえよ~~らりるれろ△ あいうえを~かきくけこ△ さしすせそ~~たちつてと△ なにぬねの~はまやらわ△ いきしちに~~ひみいりい△ わをん△ [改頁] はひふへほ~まみむめも△ やいゆえよ~らりるれろ△ ----(終わり) ----(VBAソース) Sub ゲラ刷り() ' ' ゲラ刷り Macro ' 記録日 2007/08/13 記録者 ' ChangeFileOpenDirectory "D:\変換\" Documents.Open FileName:="gera.txt", ConfirmConversions:=False, ReadOnly:= _ False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _ "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _ Format:=wdOpenFormatAuto, XMLTransform:="", Encoding:=932 Selection.WholeStory Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = Chr(13) .Replacement.Text = "△" & Chr(13) & Chr(10) .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = Chr(10) & Chr(12) .Replacement.Text = "[改頁]" & Chr(12) .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = Chr(15) & Chr(81) & Chr(40) & Chr(14) .Replacement.Text = "■" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll 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 = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub ----(終わり)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mqm
- ベストアンサー率44% (97/219)
全角空白を置換する際に、置換対象となる検索文字列の欄に全角で空白を入力されていますか? 置換後の文字列が半角記号( ~ )であることから、置換条件の入力時に文字入力モードがかな入力ではなく半角入力になっている可能性が考えられます。その場合、全角空白を検索なさりたいにもかかわらず、検索文字列の欄に半角空白が打ち込まれていることになります。 としたら、対策はとても簡単で、置換条件の入力時に文字入力モードをかな入力になさることです。 置換後の文字列を全角記号になされば、こうした問題は回避されるでしょう。 同様に、半角空白を置換されるときには、入力モードを半角に切り替えられればよいのです。 ちなみに、制御コードを一発で画面表示なさりたいのでしたら、 ツールメニュー > オプション > 表示 > 編集記号の表示 の中で、 「スペース」とか「すべて」を選択なさればマクロをいじる必要もありません。
使っておられるワードのバージョンがわかりませんが、「置換」のダイアログでオプションボタンをクリックしてから「半角と全角を区別する」ちチェックを入れて置換を行えばよいと思いますが。ちなみに私が使っているワードは2003です。
お礼
atomimiさんへ!回答ありがとうございました。使っているのは同じワード2003です。置換にオプションというのがあるのを知らずに使っていました。オプションをチェックしたら「あいまい検索」にチェックが入ってましたので、はずして「半角と全角を区別する」にチェックを入れてから新しいマクロの記録をやってやりなおしてみたら見事全角と半角が区別されて置換され、見事に問題は解決しました!(*^。^*) 本当に助かりました!ありとうございました!
お礼
早速の回答ありがとうございます。 次の方が答えられているように置換のオプションというものを知らずにマクロの記録をとっていたのが原因でした。制御コードのやり方も知りました。ありがとうございました。
補足
入力は切り替えています。置換対象のテキストファイルは他人が作成したものです。