見出しの配下にある内容を取得する(Word)

見出しの配下にある内容を取得する(Word)

見出しの配下を取得したい

「見出し」というものは、普通、文書の〝意味のあるカタマリ〟ごとに付けるものだと思う。

「見出し」単位で、文書の内容を取り出せたら便利である。

ただ、〝手作業でコピッペする〟というのも、あまりスマートなやり方ではない。

定義済みブックマークを使う

そこで、「定義済みブックマーク」を使うのである!

コチラのページによると、「定義済みのブックマーク」には、「\HeadingLevel」というものがある。

挿入ポイントまたは選択範囲、および下位の見出しとテキストを含む見出し。 現在の選択範囲が本文テキストの場合、"\HeadingLevel" ブックマークには、前の見出しと、その見出しの下位にある見出しとテキストが含まれます。

自動翻訳なので、ちょいけったいな日本語になっている。

「挿入ポイント」とは、たぶん〝カーソル位置〟のことなのだろう。「挿入ポイントまたは選択範囲」というのは、要するにVBASelectionオブジェクトのことだと思う。(間違っていたら教えてください。)

つまり、たとえば、Selection.Bookmarks.Item("\HeadingLevel").Rangeとしてやれば、カーソル位置直前の見出し(見出しの中にカーソルがある場合は、その見出し)と、その配下にある見出し・本文をまるごと指し示すRangeオブジェクトが取得できるのである!

カーソルのある見出しの配下にある内容をクリップボードにコピーするマクロ

では、標題のマクロを作成してみよう。

リスト1
Private Sub copyHeadingLevel()
  Dim tgtRng As Range
  Set tgtRng = Selection.Bookmarks.Item("\HeadingLevel").Range
  Call tgtRng.Copy
End Sub

たったこれだけである!

使ってみる

まず、こんな文書を用意する。

「ナビゲーション」を見たらわかるように、見出しは2階層である。

「ナビゲーション」で見出しをクリックすると、カーソルはその見出しの先頭にジャンプする。

そこで、まず「開催・運営」という見出しをクリックする。

当然、「開催・運営」という見出しの先頭にカーソルが移動する。

この状態でリスト1を実行する。

見かけ上何も起きないが、この状態で、新しい文書にカーソルを置いて、

[Ctrl]+[ V ]をポチッ!

このように、見出し単位で貼り付けることができるのである!

ちなみに、

この状態(見出し「競輪用自転車」の配下には、さらに下位の見出し「部品全般」、「フレーム」、「ギア(ギヤ)」が設定されている。)で先ほどと同じことをすると、



こんなふうになる。

おわりに

Wordの「ブックマーク」機能は便利です。

もっと使いこなさないと!