Word (VBA)

Word VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Word 2007)
空白行の取得について
投稿日時: 17/03/18 13:29:41
投稿者: アベッチ

文章に中に改行が連続して2回あったら「ページ区切り」を入れて
見た目を綺麗にするマクロを組みたいと思っています。
エクセルVBAに関しては経験があるのですが、wordに関しては初めてになります。
 
マクロを動かした際に1行づつ行を読取して、そこに改行コードなり文字数が0だったりが2回続けてあれば
「ページ区切り」を入れると言うのを組みたいのですが、行の読取に関しては
http://www.relief.jp/itnote/archives/word-vba-get-text-each-line.php
の方を参考に問題なく動くのですが、読み取っている行にカーソルを移動させるやり方がわからない状態です。
自身の方でifを使用して2回の空白読取(又は改行)があったときにページ区切りを入れると言う動作をさせる事は出来たのですが、ページ区切りの位置が実際にカーソルのある位置からになってしまう為、ページの最後にページ区切りが追加されていくだけになります。
 
どなたかアドバイスを頂けませんでしょうか!?
単純な事でしたらスイマセン・・・。
 
よろしくお願い致します。

回答
投稿日時: 17/03/18 14:17:34
投稿者: んなっと

「改行」というのが、
[1]行の右端で文字数があふれて、次の行に続くこと
[2]Enterキーを押して改行すること
のどちらかわかりません。今後は具体例を添えて書いてください。
 
おそらく[2]で、以下のようになればいいのでしょう。
 
ああああああああああ
あああああああ┛

いいいいいいいいいい
いいい
 
   ↓置換
 
ああああああああああ
あああああああ----改ページ----
いいいいいいいいいい
いいい
 
 
もしそうであれば、VBAは不要です。
 
置換 オプション ワイルドカードを使用する
検索する文字列: ^13{2,}
置換後の文字列: ^m
 
※VBAを使えば...
 
Sub test()
  With ActiveDocument.Range(0, 0).Find
    .Text = "^13{2,}"
    .Replacement.Text = "^m"
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
End Sub

投稿日時: 17/03/19 12:44:25
投稿者: アベッチ

なるほど!
セルの考えとは全然違いそうですね・・・!
頂いたコードで問題なく動きました!
 
ありがとうございます!