【Word VBA】カーソル位置の段落を文書末尾に移動するWordマクロ

以前の記事「【書籍紹介】アウトライナー実践入門 ~「書く・考える・生活する」創造的アウトライン・プロセッシングの技術~ 」で紹介した「未使用(本書P.66)」という考え方を実現するためのWordマクロです。

Wordをアウトライナーとして使う場合、アイディア出しをした項目が現在作成しているリストにそぐわないことがあります。

その場合に、そのアイディアを削除するのではなく、一時的に避難させる場所「未使用」領域に移動させます。

全体の構成ができていない段階では、このような思考のバッファ領域がですね。

とりあえず書いておいてもよい、書いたことを忘れずに眺めることができる、というシステムがあると気持ちに余裕ができます。

このマクロでできること

カーソル位置の段落を段落の末尾に移動させます。

(実行前)

カーソルが「クロワッサン」の段落にある状態でマクロを実行します。

アウトライナー

(実行後)

カーソルのある段落の文字列「クロワッサン」が文書末尾に移動します。

カーソルは、元の段落にとどまります。

アウトライナー

マクロの解説

クリップボードを用いずに文字列などをコピペするには、32行目のようにFormattedText メソッドを用います。

私は、未使用項目は「見出し2」(アウトラインレベル2)で管理をしているので、33行目でスタイルを「見出し2(wdStyleHeading2)」に設定しています。ここの項目は運用に応じて自由に変更してみてください。

マクロ


Sub 段落を移動()

 Dim myRange As Range
 Dim myDoc As Document
 
 Set myDoc = ActiveDocument
 
 '-------------------------------------------
 '移動元の段落をmyRangeに設定
 '-------------------------------------------
 'カーソル位置の段落をmyRangeへ設定
 Set myRange = Selection.Range
 myRange.Expand Unit:=wdParagraph
 
 '改行記号を除外
 With myRange
  .End = .End - 1
 End With
 
 '-------------------------------------------
 '文書末尾の移動先を指定
 '-------------------------------------------
 '文書末尾が空段落でない場合に空段落(移動先)を挿入
 If myDoc.Paragraphs.Last.Range <> vbCr Then
  myDoc.Range.InsertParagraphAfter
 End If
 
 '-------------------------------------------
 '移動先の空段落に移動元の段落を貼り付ける
 '-------------------------------------------
 With myDoc.Paragraphs.Last.Range
  .FormattedText = myRange.FormattedText
  .Style = wdStyleHeading2
 End With
 
 '-------------------------------------------
 '移動前の段落を削除
 '-------------------------------------------
 myRange.Delete
 
 '-------------------------------------------
 'オブジェクト変数の解放
 '-------------------------------------------
 Set myDoc = Nothing
 Set myRange = Nothing
 
End Sub

トップへ戻る