- ベストアンサー
wordのマクロで
- みんなの回答 (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)
- enunokokoro
- ベストアンサー率74% (3543/4732)
簡単なものなら。 [置換]で[ワイルドカード]にチェックを入れます。 [検索する文字列]: ^13{1,} または ^11{1,} [置換後の文字列]: ^p 段落記号が1つ以上、または段落内改行記号が1つ以上を[検索]をして、 段落記号一つに[置換]する設定です。 No.2の回答者が提示した方法では、不要な改行の数が奇数の場合と偶数 の場合で結果が違いますから、希望していることができないので、意味 がないと思います。 No.3の回答者が提示した方法でなら問題なく置換がされますが、不要な 改行だけが文書の最後に連続してあるような場合だと、置換の対象には なりませんので、私の提示したほうが利用範囲が広いと思います。
- MackyNo1
- ベストアンサー率53% (1521/2850)
参考までに補足します。 基本的にTrick--o--さんの回答された置換操作でOKですが、連続した改行は提示のワイルドカード置換ではできません。 正確なワイルドカード置換は以下のような設定になります。 置換する文字列(連続する改行と改行以外の文字列) ^13@([!^13]) 置換後の文字列(複数の改行は1つの改行にして改行以外の文字列はそのまま) ^13\1 ちなみにメールの文章などをワードにコピー貼り付けしたときの改行は↓マーカーの段落内改行ですので、その場合は^13の代わりに^11で置換して下さい。
お礼
回答有難うございます。間にセルが入ると改行が取れないということはないでしょうか。 ああああ あああああ ┌┐ └┘ あああああ
- Trick--o--
- ベストアンサー率20% (413/2034)
Wordの置換(Ctrl+H)で、オプションを展開 ワイルドカードにチェック 検索文字列 ^13^13@ 置換文字列 (何も入力しない) で(全て)置換。 意味:^13→改行、@→直前の文字を繰り返す、XX@→Xが2個以上連続する(ワイルドカード使用時) マクロにしたければ、マクロの記録を使って適当に。
補足
回答有難うございます。途中にセルが入っても改行がとれるようですね。マクロを記録したあとに do loop を利用すれば最終的に改行がとれそうですね。ただ、セルの直前と直後の改行だけはどうにもとることができないようです。 ああああ あああああ ┌┐ └┘ あああああ
Wordの置換でエスケープシーケンスを扱えるかどうかわからないですが、テキストエディタでの置換なら 改行コードが「\n」なので、置換で \n\n → \n とすればできます。
補足
回答有難うございます。間にセルが入ると改行が取れないということはないでしょうか。 ああああ あああああ ┌┐ └┘ あああああ