• ベストアンサー

wordのマクロで

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

質問者が選んだベストアンサー

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

その他の回答 (4)

回答No.4

簡単なものなら。 [置換]で[ワイルドカード]にチェックを入れます。  [検索する文字列]: ^13{1,}   または ^11{1,}  [置換後の文字列]: ^p 段落記号が1つ以上、または段落内改行記号が1つ以上を[検索]をして、 段落記号一つに[置換]する設定です。 No.2の回答者が提示した方法では、不要な改行の数が奇数の場合と偶数 の場合で結果が違いますから、希望していることができないので、意味 がないと思います。 No.3の回答者が提示した方法でなら問題なく置換がされますが、不要な 改行だけが文書の最後に連続してあるような場合だと、置換の対象には なりませんので、私の提示したほうが利用範囲が広いと思います。

gogo545454
質問者

補足

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

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

参考までに補足します。 基本的にTrick--o--さんの回答された置換操作でOKですが、連続した改行は提示のワイルドカード置換ではできません。 正確なワイルドカード置換は以下のような設定になります。 置換する文字列(連続する改行と改行以外の文字列) ^13@([!^13]) 置換後の文字列(複数の改行は1つの改行にして改行以外の文字列はそのまま) ^13\1 ちなみにメールの文章などをワードにコピー貼り付けしたときの改行は↓マーカーの段落内改行ですので、その場合は^13の代わりに^11で置換して下さい。

gogo545454
質問者

お礼

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

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

Wordの置換(Ctrl+H)で、オプションを展開 ワイルドカードにチェック 検索文字列 ^13^13@ 置換文字列 (何も入力しない) で(全て)置換。 意味:^13→改行、@→直前の文字を繰り返す、XX@→Xが2個以上連続する(ワイルドカード使用時) マクロにしたければ、マクロの記録を使って適当に。

gogo545454
質問者

補足

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

noname#198951
noname#198951
回答No.1

Wordの置換でエスケープシーケンスを扱えるかどうかわからないですが、テキストエディタでの置換なら 改行コードが「\n」なので、置換で \n\n → \n とすればできます。

関連するQ&A