キーワードを蛍光色にするマクロ
またかよ?というテーマですが、今までのものとはかなり違います。
まず、「ボタンが美しい!」ことと、「読者さんとの共同制作」という点が新しいです。
また、新しいコードも覚えましたので、是非ご覧ください。
●作用
テキストファイルに書いたキーワードを現在の文書中から探して、蛍光色にします。
蛍光色として選べるのは、文字に重ねても文字が読みやすいと思われる黄色や明るい緑などを中心に6色を使えるようにしました。
よって、キーワードの種類別に着色することができます。
また、キーワードの蛍光色を削除する機能もあります。
以前紹介した翻訳文の比較表自動作成マクロとあわせて使うと、その効果が発揮されます。
どんな使い方があるのか、いろいろとお試しください。
次回以降、とっておきの使い方を紹介しますので、それもお楽しみに。
●使い方
1.テンプレートを登録します。こちらをご参照ください。
このような7つのボタンがツールバーに表示されます。
左から6つが、それぞれのボタンの色に対応した蛍光色を着色するマクロで、一番右が蛍光色を削除するマクロです。
3.キーワードを記載したテキストファイルを用意します。
以下のファイルを適当なフォルダに保存してください。
参考ファイル:「sample_keyword1.txt」をダウンロード
ここにあげたキーワードは英語ですが、日本語でもかまいませんし、日本語と英語が混在してもかまいません。
あまり意味のあるキーワードを載せていません。単なる例示と思ってください。
4.キーワード検索対象となるワード文書を用意します。
参考ファイル:アップル社の7,536,565特許「sample_patent_us7536565.doc」をダウンロード
これも、最近の特許から選んだだけで、あんまり意味があるものではありません。単なる例示と思ってください。
5.着色する色のボタンをクリックします。
上記の「キーワード検索対象となるワード文書」を開いてください。
7つのボタンともに同じ操作で使えます。好きな色のボタンをクリックしてください。
ボタンをクリックするとファイルを選択する窓(左図参照)が開きます。
この窓を開いた状態では、テキストファイルだけが表示されるようにしました。
上記ステップ3にてテキストファイルを保存したフォルダを選び、どちらか一つのファイルを開きます(ファイルを選択してダブルクリックまたは、開くボタンをクリック)。
6.着色されます。
●工夫
①キーワードをテキストファイルに書きました。
今回は、複数のキーワードリストを使い分けることができます。
今までは、マクロのテンプレートにキーワードを書く手法を使っていましたが、これだと複数のキーワードリストを使い分けるのが難しいと感じておりました。
②ファイル選択が簡単!
プログラムの20,40~70行に記載されています。
キーワードのファイルを通常のファイルを開く窓から直感的にできます。
③ボタンの色が美しい!
自作するのをやめました。
「簡単プログラミングExcel VBA 応用編」の付録のFaceIDリストから気に入ったボタンを探し出して使いました。
美しいですねぇ。仕事中についついクリックしてしまいます。
④テキストファイルの読み込み機能を使いました。
初めて使いました。スピードが速い感じがします。
プログラムの90,130,140,260行に関連のコードが書かれています。
ワードのVBの編集画面のヘルプファイルを見ると少し意味がわかると思います。
実際の作用としては、テキストファイルのファイル名を選んだ後、「シーケンシャル入力モード」でファイルを開いて、ファイルの先頭からファイルの末尾(EOF)までの文字列を一つずつ取得していることになります。
●プログラム(共通部分)
myHLCの文字列に、着色する色を代入して、以下の共通のプログラムを実行しています。
Sub 所定文字列を蛍光色にする(myHLC As String)
Dim FileName
Dim keyWord As String
Dim actDoc As Document
Dim myColorIndex As Long
Dim myRange As Range
Dim mydlgOpen As Dialog
'対象文書の設定
10 Set actDoc = ActiveDocument
'ダイアログボックスの設定
20 Set mydlgOpen = Dialogs(wdDialogFileOpen)
'Rangeオブジェクトの設定
30 Set myRange = Selection.Range
'キーワードファイル(テキストファイルに限定)を指定する
40 mydlgOpen.Name = "*.txt"
50 If mydlgOpen.Display = -1 Then
60 FileName = mydlgOpen.Name
70 End If
80 If Len(FileName) <> 0 Then
'テキストファイルをシーケンシャル入力モードで開く
90 Open FileName For Input As #1
'対象文書を選択
100 actDoc.Activate
'蛍光ペンの現在の設定を仮保存
110 myColorIndex = Options.DefaultHighlightColorIndex
'指定した蛍光色に変更
120 Options.DefaultHighlightColorIndex = myHLC
'テキストファイル内で、最終行まで繰り返す処理
130 Do While Not EOF(1)
140 Line Input #1, keyWord
150 With myRange.Find
160 .Forward = True
170 .Wrap = wdFindContinue
180 .MatchWholeWord = True
190 .MatchByte = True
200 .Format = True
210 .Replacement.Highlight = True
220 .Execute findText:=keyWord, _
ReplaceWith:=keyWord, Replace:=wdReplaceAll
230 End With
240 Loop
'蛍光ペンの設定を元に戻す
250 Options.DefaultHighlightColorIndex = myColorIndex
260 Close #1
270 End If
280 Set actDoc = Nothing
290 Set mydlgOpen = Nothing
300 Set myRange = Nothing
End Sub
●補足
このマクロは、このブログの読者さんと共同でアイディアをぶつけながら作りました。
いただいた提案が面白かったので、自分なりに解釈したり、使える技術を探したりしながらの作業。
おかげさまで、仕事の新しい方法を知って効率化ができましたし、マクロのコードもたくさん覚えました。
ありがとうございました。
