重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ファイル内にある不要の改行をすべてとることは可能でしょうか?
改行が2個連続する場合は1個にするというマクロでOKだと思うのですが、どのように作ればよいのでしょうか。
もしくは、検索の置換で改行2つを1つに置き換えることは可能でしょうか。

「wordのマクロで」の質問画像

A 回答 (5件)

No.4の回答者です。


希望の変換したい内容を、補足などで後出ししないほうがよいですよ。
場合によっては、対応するのにまったく違ったアプローチが必要な場合
もありますから。

とりあえず、マクロでの例

Sub Test01()
'表を先に解除する
 Dim tableTemp As Table
 Dim rngTemp As Range
  For Each tableTemp In ActiveDocument.Tables
  Set rngTemp = _
  tableTemp.ConvertToText(Separator:=wdSeparateByParagraphs, NestedTables:=True)
 Next
'連続した段落記号を一つの段落記号に
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
  With Selection.Find
   .Text = "^13{1,}"
   .Replacement.Text = "^p"
   .MatchWildcards = True
  End With
 Selection.Find.Execute Replace:=wdReplaceAll
End Sub

今回だけは、表が間に入っている場合でも対応できる例を出しますが、
表以外のオブジェクトが[行内]以外にある(アンカーのある段落)などの
場合は、その段落は残りますので別のアプローチが必要になります。
その場合は私は回答しませんので、別質問したほうがよいと思います。
    • good
    • 0

簡単なものなら。



[置換]で[ワイルドカード]にチェックを入れます。

 [検索する文字列]: ^13{1,}   または ^11{1,}
 [置換後の文字列]: ^p

段落記号が1つ以上、または段落内改行記号が1つ以上を[検索]をして、
段落記号一つに[置換]する設定です。

No.2の回答者が提示した方法では、不要な改行の数が奇数の場合と偶数
の場合で結果が違いますから、希望していることができないので、意味
がないと思います。
No.3の回答者が提示した方法でなら問題なく置換がされますが、不要な
改行だけが文書の最後に連続してあるような場合だと、置換の対象には
なりませんので、私の提示したほうが利用範囲が広いと思います。

この回答への補足

回答有難うございます。間にセルが入ると改行が取れないということはないでしょうか。


ああああ
あああああ

┌┐
└┘

あああああ

補足日時:2010/03/17 23:09
    • good
    • 0

参考までに補足します。



基本的にTrick--o--さんの回答された置換操作でOKですが、連続した改行は提示のワイルドカード置換ではできません。

正確なワイルドカード置換は以下のような設定になります。

置換する文字列(連続する改行と改行以外の文字列)
^13@([!^13])

置換後の文字列(複数の改行は1つの改行にして改行以外の文字列はそのまま)
^13\1

ちなみにメールの文章などをワードにコピー貼り付けしたときの改行は↓マーカーの段落内改行ですので、その場合は^13の代わりに^11で置換して下さい。
    • good
    • 0
この回答へのお礼

回答有難うございます。間にセルが入ると改行が取れないということはないでしょうか。


ああああ
あああああ

┌┐
└┘

あああああ

お礼日時:2010/03/17 23:08

Wordの置換(Ctrl+H)で、オプションを展開


ワイルドカードにチェック
検索文字列 ^13^13@
置換文字列 (何も入力しない)
で(全て)置換。

意味:^13→改行、@→直前の文字を繰り返す、XX@→Xが2個以上連続する(ワイルドカード使用時)

マクロにしたければ、マクロの記録を使って適当に。

この回答への補足

回答有難うございます。途中にセルが入っても改行がとれるようですね。マクロを記録したあとに do loop を利用すれば最終的に改行がとれそうですね。ただ、セルの直前と直後の改行だけはどうにもとることができないようです。

ああああ
あああああ

┌┐
└┘

あああああ

補足日時:2010/03/17 23:10
    • good
    • 0

Wordの置換でエスケープシーケンスを扱えるかどうかわからないですが、テキストエディタでの置換なら


改行コードが「\n」なので、置換で
\n\n → \n
とすればできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!