Home » ワードマクロ・Word VBAの使い方 » Office連携 » ブックマーク名一覧をExcelに作成するWordマクロ

ブックマーク名一覧をExcelに作成するWordマクロ

対象:Word2007, Word2010, Word2013

アクティブな文書のすべてのブックマークを削除するWordマクロをご紹介しました。

Wordのブックマーク機能が活用されている現場をイメージすると、全ブックマークを削除するよりも、たくさんのブックマークの中の、いくつかは残してその他を削除したいというニーズのほうがありそうです。

このニーズを満たすための実装方法は、いろいろ考えられます。
いろいろと考えられますが、Excelにブックマーク名一覧を作成して、残したいブックマークをExcel上で指定して、他のブックマークを削除するという方法が、私には便利そうに感じます。

そのために、まず、ブックマーク名等の一覧をExcelに作成するWordマクロを作ってみました。

[スポンサードリンク]

ブックマーク名一覧をExcelに作成するサンプルマクロ

ブックマークの存在するWordファイルがアクティブな状態で、以下のマクロを実行すると、新しいExcelファイルに、ブックマーク名・ページ番号・行番号の一覧が作成されます。

Sub ブックマーク名一覧を新規Excelに作成する()

 Dim xls As Object  'Application.Excel
 Dim bkm As Bookmark
 Dim arr()       'ブックマーク名, ページ番号, 行番号
 Dim cnt As Long    'ブックマーク数
 Dim i As Long

 With ActiveDocument.Bookmarks
  cnt = .Count
  If cnt = 0 Then
   MsgBox "この文書にはブックマークが存在しません"
   Exit Sub
  End If
  ReDim arr(1 To cnt, 1 To 3)
  For i = 1 To cnt
   With .Item(i)
    arr(i, 1) = .Name
    With .Range
     arr(i, 2) = _
       .Information(wdActiveEndAdjustedPageNumber)
     arr(i, 3) = _
       .Information(wdFirstCharacterLineNumber)
    End With
   End With
  Next i
 End With

 Set xls = CreateObject("Excel.Application")
 With xls
  .Workbooks.Add
  .Range("A1").Value = ActiveDocument.Name
  .Range("A2").Value = "ブックマーク名"
  .Range("B2").Value = "ページ番号"
  .Range("C2").Value = "行番号"
  .Range(.Cells(3, "A"), .Cells(cnt + 2, "C")).Value = arr()
  .Range("A1:C2").Font.Bold = True
  .Range("A1").CurrentRegion.EntireColumn.AutoFit
  .Visible = True
 End With
 Set xls = Nothing

End Sub

サンプルマクロの解説

2次元配列に「ブックマーク名, ページ番号, 行番号」の形でデータを格納しておいてから、新規のExcelファイルに一気に書き出すというマクロにしてみました。

アクティブな文書の、ブックマークの数を調べて、
 With ActiveDocument.Bookmarks
  cnt = .Count
  If cnt = 0 Then
   MsgBox "この文書にはブックマークが存在しません"
   Exit Sub

2次元配列のサイズを決めてから、
  ReDim arr(1 To cnt, 1 To 3)

For~Nextループを回しながら、
  For i = 1 To cnt

ブックマーク名、
   With .Item(i)
    arr(i, 1) = .Name

ブックマークの存在しているページ番号、
    With .Range
     arr(i, 2) = _
       .Information(wdActiveEndAdjustedPageNumber)

行番号を配列に格納しています。
     arr(i, 3) = _
       .Information(wdFirstCharacterLineNumber)

ブックマーク名・ページ番号・行番号の取得で利用している各種プロパティは、既にご紹介しているブックマーク位置を取得するマクロと同じです。

配列にデータを格納したら、Excelを起動して、
 Set xls = CreateObject("Excel.Application")

新規ブックを開き、
 With xls
  .Workbooks.Add

A1セルに文書名を入力し、
  .Range("A1").Value = ActiveDocument.Name

A2:C2セルに見出しを作成してから、
  .Range("A2").Value = "ブックマーク名"
  .Range("B2").Value = "ページ番号"
  .Range("C2").Value = "行番号"

A3セル以下に2次元配列の値を一気に書き出してから、
  .Range(.Cells(3, "A"), .Cells(cnt + 2, "C")).Value = arr()

体裁を整えてからExcelを表示しています。
  .Range("A1:C2").Font.Bold = True
  .Range("A1").CurrentRegion.EntireColumn.AutoFit
  .Visible = True

最終更新日時:2019-02-06 04:56

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Office連携 » ブックマーク名一覧をExcelに作成するWordマクロ

「Office連携」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.