- 締切済み
word2010のマクロについて
word2010で、行頭にある改行コードを削除するマクロを作りたいのですが、wordのマクロは作ったこともなく、まったくの素人です。 ネット上では、置換機能で「^p^p」⇒「^p」でOKとはありますが、表が混在するワード文書では、表の次にある空行を削除することはできません。 Perlだと(Perlは使えます)、例えば、$line = s/^¥n//g; でいけますね。ワードのマクロはネットでいろいろ調べましたが、基本知識がないためよく分かりません。 どなたかご教授のほどよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
#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 ' ' ///
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
こんにちは。 連続した改行をひとつに纏めるなら、 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 等を参考に、ご要望に適う方法を見つけて、 とりあえずマクロの記録等からコードを探ってみてください。
お礼
ご丁寧な回答ありがとうございます。 いろいろと試させていただきたいと思います。 ありがとうございました。
お礼
ありがとうございます。 まだ試していませんが、トライしてみます。 コード内容は、私にはチンプンカンプンですが(汗)…