• 締切済み

word2010のマクロについて

word2010で、行頭にある改行コードを削除するマクロを作りたいのですが、wordのマクロは作ったこともなく、まったくの素人です。 ネット上では、置換機能で「^p^p」⇒「^p」でOKとはありますが、表が混在するワード文書では、表の次にある空行を削除することはできません。 Perlだと(Perlは使えます)、例えば、$line = s/^¥n//g; でいけますね。ワードのマクロはネットでいろいろ調べましたが、基本知識がないためよく分かりません。 どなたかご教授のほどよろしくお願いいたします。

みんなの回答

回答No.2

#1です。追加レスです。 もしかしたら、こういうことかな?という参考マクロです。 お望みと違うようでしたら、すみません。 ' ' /// Sub Re8986783w() Dim nPosS As Long Dim nPosE As Long Dim i As Long   With ActiveDocument ' ' 連続改行を ひとつの改行 に置換     .Range.Find.Execute _       MatchWildcards:=True, _       FindText:="^13{2,}", _       ReplaceWith:="^p", _       Replace:=wdReplaceAll ' ' ドキュメント先頭の改行(があればすべて) 削除     Do While .Range.Characters(1) = vbCr       .Range.Characters(1).Delete     Loop ' ' 各テーブルを下方にあるものから順にループして、 ' ' テーブルの直後、直前に 改行があれば (下方から順に)削除     For i = .Tables.Count To 1 Step -1       With .Tables(i).Range         nPosS = .Start         nPosE = .End       End With     ' ' テーブルの直後       With .Range.Characters(nPosE + 1)         If .Text = vbCr Then .Delete       End With     ' ' テーブルの直前       With .Range.Characters(nPosS - 1)         If .Text = vbCr Then .Delete       End With     Next i   End With End Sub ' ' ///

kimu_Masa
質問者

お礼

ありがとうございます。 まだ試していませんが、トライしてみます。 コード内容は、私にはチンプンカンプンですが(汗)…

回答No.1

こんにちは。 連続した改行をひとつに纏めるなら、   ActiveDocument.Range.Find.Execute _     MatchWildcards:=True, _     FindText:="^13{2,}", _     ReplaceWith:="^p", _     Replace:=wdReplaceAll 等のように(ここで省略している引数については必要に合わせて適宜)。 > 表の次にある空行を削除することはできません。 これは、Word の仕様ですので、 少なくともテキスト処理マクロでは、どうにも出来ません。 表の設定を変える、ということになるかと思います。  『表の後ろの改行・段落記号をなくしたい』 http://www.relief.jp/itnote/archives/002784.php  『ワード 罫線の後に残る改行マークを消すには』(No.3) http://okwave.jp/qa/q8307803.html 等を参考に、ご要望に適う方法を見つけて、 とりあえずマクロの記録等からコードを探ってみてください。

kimu_Masa
質問者

お礼

ご丁寧な回答ありがとうございます。 いろいろと試させていただきたいと思います。 ありがとうございました。

関連するQ&A