見出しの配下にある内容を取得する(Word)
見出しの配下を取得したい
「見出し」というものは、普通、文書の〝意味のあるカタマリ〟ごとに付けるものだと思う。
「見出し」単位で、文書の内容を取り出せたら便利である。
ただ、〝手作業でコピッペする〟というのも、あまりスマートなやり方ではない。
定義済みブックマークを使う
そこで、「定義済みブックマーク」を使うのである!
コチラのページによると、「定義済みのブックマーク」には、「\HeadingLevel
」というものがある。
挿入ポイントまたは選択範囲、および下位の見出しとテキストを含む見出し。 現在の選択範囲が本文テキストの場合、"\HeadingLevel" ブックマークには、前の見出しと、その見出しの下位にある見出しとテキストが含まれます。
自動翻訳なので、ちょいけったいな日本語になっている。
「挿入ポイント」とは、たぶん〝カーソル位置〟のことなのだろう。「挿入ポイントまたは選択範囲」というのは、要するにVBAのSelection
オブジェクトのことだと思う。(間違っていたら教えろてください。)
つまり、たとえば、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の「ブックマーク」機能は便利です。
もっと使いこなさないと!