プロが教える店舗&オフィスのセキュリティ対策術

Word2007の表各セルに存在する空白行を削除したく、ネット上で以下のプログラムを見つけて実行しましたが、表外では希望通りに空白行が消えますが、表中の各セルにある空白行が消えません。ファイル数・セル数が多く手作業では時間が掛りすぎますので、なんとか良い方法がないかと四苦八苦しています。VBAは初心者です。宜しくお願いします。


Sub カラ行削除()
'
'
With ActiveDocument.Content.Find
 .Text = "^p^p"
With .Replacement
 .Text = "^p"
End With
 .Execute Replace:=wdReplaceAll
End With
End Sub

A 回答 (1件)

質問のマクロにある^pは段落記号なので、段落記号だけが連続している


ものを一つにするものであって、表のセル内であっても空の段落が連続
している場合も有効なはずです。
ただし、セルの最後にある段落記号と少し形の違う[セルの終了記号]と
段落記号が連続している場合には、質問のマクロではできません。

[セルの終了記号]は特殊記号の一つですがで、検索機能でも使える^pの
ような特殊記号と違って、一般機能の検索では探せないらしいです。

マクロで作業ができるなら、以下のGoogleグループにあるマクロで対応
してはいかが。参照先 microsoft.public.word.vba.general より

https://groups.google.com/forum/#!topic/microsof …

How to delete blank line at end of table cell?
回答者Klaus氏のマクロ

Sub セルの終了記号と段落記号の連続を削除()
'
Dim tableLoop as Table
Dim cellLoop As Cell
For each tableLoop in ActiveDocument.tables
 For Each cellLoop In tableLoop.Range.Cells
  While Right(cellLoop.Range.Text, 3) = Chr(13) & Chr(13) & Chr(7)
   cellLoop.Range.Characters.Last.Previous.Delete
  Wend
 Next cellLoop
Next tableLoop

End Sub

このマクロは、[セルの終了記号]である Chr(13)&Chr(7)と段落記号が
続いているだけのものを捜し削除してくれるマクロです。
表が複数あっても対応してくれます。

セル内のテキストが書かれた複数段落の途中にある空白行の場合には、
質問にあるマクロで削除できますから問題ないと思います。
    • good
    • 0
この回答へのお礼

ご案内いただいたマクロで希望した通りの結果が出ました。本当に助かります。ありがとうございます。VBAの内容はこれから勉強させてもらいます。

お礼日時:2015/06/17 15:15

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