【コード】Word文書中の蛍光ペンのテキストを抽出するWordマクロ

先日の文書中のテキストボックス内の文字列を別紙に書出すマクロ に引き続いて、テキストの抽出用マクロです。

記事をご覧になった読者の方から、質問がありまして作ってみました。

このマクロでできること

Word文書中の本文中の蛍光ペンで着色された文字列をテキスト(書式無し)として別紙に書出します。

抽出したテキスト毎に改行をして列挙します。

マクロの解説

23行目

特定の文書で検索をした場合、文書最後の蛍光ペンを検出した後、次の蛍光ペンの検出判定が空の文字列に対して起こることがありました。

その場合、無限ループに入ってしまうので、蛍光ペンが見つかった場合には、文字列が少なくとも含まれているかどうかを判定しています。

25行目、26行目

改行記号(vbCR)も蛍光ペンで着色しうるのですが、改行記号の蛍光ペンが検出された場合には無視することにしました。

今回のマクロではあくまでもテキスト情報を取り出すことが目的ですので、改行記号が書出されると読みづらくなりますのでこのような処理としました。

実は、改ページ記号にも蛍光ペンで着色できますので、同様の処理を改ページ記号にしてもいいかもしれません。

30行目、39行目

テキストを書出した後に改行をしています。

ここに、文字列を入れる場合には、代わりに以下のメソッドを追記してもします。

.InsertAfter “追記する文字列”

コンマやタブで区切ることができますね。

マクロ


Sub 蛍光ペンのテキスト抽出()

 Dim myRange As Range  'Rangeオブジェクト
 Dim myText As String  '抽出する文字列
 Dim newDoc As Document '新規で開いた文書

 '画面の更新をオフ
 Application.ScreenUpdating = False

 Set myRange = ActiveDocument.Range(0, 0)
 Set newDoc = Documents.Add

 With myRange.Find
  .Text = ""
  .Forward = True
  .Wrap = wdFindStop
  .Highlight = True
 End With

 '文書の最後の蛍光ペン後は、蛍光ペンが
 'なくても検索されたと判定されることがあるため回避する処理
 Do While myRange.Find.Execute = True And _
  myRange.Text <> ""

  If InStr(myRange.Text, vbCr) Then
   If myRange.Text <> vbCr Then
    myRange.End = myRange.End - 1
    With newDoc.Range
     .InsertAfter myRange.Text
     .InsertParagraphAfter
     myRange.Collapse direction:=wdCollapseEnd
    End With
   Else
    '蛍光ペンが改行記号の場合は無視
   End If
  Else
   With newDoc.Range
    .InsertAfter myRange.Text
    .InsertParagraphAfter
    myRange.Collapse direction:=wdCollapseEnd
   End With
  End If

 Loop

 Set newDoc = Nothing
 Set myRange = Nothing

 '画面の更新をオン
 Application.ScreenUpdating = True

End Sub

関連記事

文書中のテキストボックス内の文字列を別紙に書出すマクロ

蛍光ペンのある段落を丸ごと抽出するマクロ

コメント

  1. 坂林和重 より:

    すみません。
    蛍光ペンで無く二重下線の文字を抽出するには、どのようにすれば良いでしょうか?
    お手数をおかけしますが、お教えください。

    • 新田順也 より:

      坂林さま

      返信が遅くなりすみませんでした。

      実は、この処理はWordでもできるので以下の記事をご覧ください。
      まず、[検索と置換]ダイアログボックスで二重下線を探すように設定します。

      【Word】[検索と置換]ダイアログボックスで書式を設定するショートカットキー
      https://www.wordvbalab.com/word/4340/

      次に、二重下線箇所を一気に選択してコピペします。
      【Word】[検索と置換]ダイアログボックスにて複数箇所の文字列を選択する
      https://www.wordvbalab.com/word/612/

      どうぞお試しください!

      • 坂林和重 より:

        紹介いただいたテクニックを使わせていただきます。
        ありがとうございました。

  2. 木村 より:

    初めて質問させていただきます。蛍光ペンで抽出するマクロ、重宝しています。論文執筆中で、同じテーマの論文を集めた一つの文書を作って、そこからmethodの表現だけ抜き出すという使い方をしています。論文のタイトルを見出しとしています。それでどの論文からの表現かという情報が欲しいのですが、蛍光ペンで抽出する際その見出しも一緒に抽出するようにすることは出来ませんか。よろしくお願いします。

    • 新田順也 より:

      木村さま
      ご質問をありがとうございます。タイトルに特定の見出しスタイルを使われているという意味でしょうか。それでしたら、蛍光ペンの箇所から文書の先頭方向に向かって最初に見つけた特定の見出しスタイルの文字列を論文のタイトルとして取得できそうですね。
      最近はたくさんご要望をいただいていて着手できませんが、今後同じような要望が多いようでしたら作ってみます。ひとまず仕様をもう少し細かく教えてください。

トップへ戻る