2008-10-14

Word: 変更履歴の表示方法

変更履歴を実際に使用すると、結構いろいろな表示方法をさせたくなるもの。


よく使うのが、挿入箇所に下線、削除箇所に取消線というもの。ただ、削除箇所が多いと極めて見にくいので、削除箇所を隠し文字にすることもあります。また、挿入箇所についても、元の文字に下線がついてしまっていないか確認する場合は、挿入箇所を色のみとする必要があります。Wordの文字の書式は、直前の文字の書式に引きずられますが、元の文字に色がついている可能性は、元の文字に下線がついている可能性よりずいぶんと少ないですからね。

通常ですと、文書履歴ツールバーを表示し、その表示->オプションから変えますが、結構頻繁に変更するので、ショートカットキーを割り当てることにしました。

というわけで、挿入箇所の表示方法の変更を、alt+insertに割り振り、下線と色のみをが交互に入れ替わるようにし、削除箇所については、alt+deleteで隠し文字と取消線が交互に入れ替わるようにしました。

ショートカットキーの割り当て

'変更履歴挿入・色だけか下線か
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyInsert, wdKeyAlt), KeyCategory _
:=wdKeyCategoryMacro, Command:="挿入履歴"

'変更履歴削除・取消線か隠し文字か
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyDelete, wdKeyAlt), KeyCategory _
:=wdKeyCategoryMacro, Command:="削除履歴"

中身の機能

Sub 挿入履歴()
'下線か色だけか
If Options.InsertedTextMark = wdInsertedTextMarkColorOnly Then
Options.InsertedTextMark = wdInsertedTextMarkUnderline

Else

Options.InsertedTextMark = wdInsertedTextMarkColorOnly

End If

End Sub

Sub 削除履歴()
'取消線か隠し文字か
If Options.DeletedTextMark = wdDeletedTextMarkStrikeThrough Then
Options.DeletedTextMark = wdDeletedTextMarkHidden
Else

Options.DeletedTextMark = wdDeletedTextMarkStrikeThrough

End If

End Sub



Word: 次の検索箇所

Wordの検索は、検索画面が別途出てきて、なにげに邪魔となっている場合がある。モニターが何画面もあればいいのですが、そういう環境でない場合も当然あるわけです。


そういった場合に、今の検索条件で、もう一つ次の場所を表示したい場合にショートカットキーを設定できないか、というのがこのエントリ。

次の検索というのは、元からショートカットがある。ctrl+page down。同様に前を検索はctrl+page up。

しかし、これは別のショートカットキーとかぶっているのである。

Wordで、page up/downすると、1画面分移動する。これは有名なので使っている人も多いと思われます。

Wordで、紙をぱらぱらめくる感じで次のページの先頭に移りたいという場合もあります。例えば、5ページあとと手元のプリントアウトで見て、その後、画面を移動するとき。このときのショートカットがctrl+page up/downとかぶっているのです。

従って、デフォルトでは、検索条件を入れていない状況では、ページが移動し、検索条件を入れているときは、前後の検索に移動します。

特に大画面を使っていると、このショートカットキーはいずれも利用するので、この混乱はとても困ります。

その混乱を解決するべく、別のショートカットキーを割り振るというのが、今回のマクロ。

ページの移動をctrl+page up/downに、検索の前後を、alt+テンキーのプラス/テンキーのエンターに割り振ってみました。

割り振りマクロ

'次のページ ctrl pagedown
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyPageDown, wdKeyControl), _
KeyCategory:=wdKeyCategoryMacro, Command:="次のページ"

'前のページ ctrl pageup
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyPageUp, wdKeyControl), _
KeyCategory:=wdKeyCategoryMacro, Command:="前のページ"

'次の検索 alt enter(ten)
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyReturn, wdKeyAlt), KeyCategory _
:=wdKeyCategoryMacro, Command:="次の検索"

'前の検索 alt +(ten)
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyNumericAdd, wdKeyAlt), _
KeyCategory:=wdKeyCategoryMacro, Command:="前の検索"


で、次が肝心の中身の動き。

Sub 次のページ()
'
'次のページへ ctrl + PageDown
With Application.Browser
'表になど対応できるように変更。元は下記
' .Target = wdBrowsePage
.Target = wdBrowseGoTo
.Next
End With

End Sub

Sub 前のページ()
'
'前のページへ ctrl + Pageup
With Application.Browser
'表になど対応できるように変更。元は下記
' .Target = wdBrowsePage
.Target = wdBrowseGoTo
.Previous
End With

End Sub

Sub 次の検索()
'
Dim test
'次の検索へ Alt + num +
With Application.Browser
.Target = wdBrowseFind
.Next
End With

End Sub

Sub 前の検索()
'
'前の検索へ Alt + Enter
With Application.Browser
.Target = wdBrowseFind
.Previous
End With

End Sub





Word: Delta View

Word 間の文書を比較する方法にWorkshareについている、Delta View という機能を使うという方法がある。Wordの文書比較よりも優秀な結果を示してくれるため、導入している法律事務所は多い。

http://www.workshare.com/


身も蓋も無い言い方をすると、Wordの文書比較がいけてないために存在しているようなニッチ商品であるが、文書屋にはありがたいもの。

ただ、Wordの文書比較のように変更履歴のような見かけで見せてくれるものの、これは変更履歴ではない。そのために、docで保存し、次へという履歴のツールバーのボタンを押しても、うまく作用しない。

専用のDVというソフトでは次の変更箇所というボタンがあるのだが、これでは編集がめんどくさい。

なにより、ほかのソフトの使い方を覚えないといけず、無理。

よって、Wordの機能を使いつつ、次の変更履歴箇所を順次表示していく方法は無いものかと思い、考案したのがこのマクロ。何年もたっていたのだが、依然、使えるようなので、一応掲示してみます。

構造はシンプル。

追加箇所の青、削除箇所の赤、移動箇所の緑のフォントを検索し、全部の箇所に二重線を引くという置き換えを行っているだけ。その後、検索で、二重線の場所を順次検索していけば、擬似的に、変更箇所をぽんぽんぽんと表示できるはず、というものです。マクロを実行すると、ご丁寧に、直後に検索条件まで入っているので、次の検索ってのをするだけで表示できます。

ま、多少なりともお役に立てれば、ですね。

以下、プログラム

Sub DV二重線()
'
' DV活用 Macro
' DVによる変更箇所すべてに2重下線を引く。これにより一括して検索が可能となる。

'画面更新をしない
Application.ScreenUpdating = False



Selection.HomeKey Unit:=wdStory

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Font.Color = RGB(0, 192, 0) 'みどり
.Format = True '上記フォーマットを利用する
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With

'検索でヒットした文字列に二重下線をつける
Do While Selection.Find.Execute = True
owari = Selection.End '変数の使用 ""を選択としているために一番最後に、不都合が生じるため
If Selection.Start = owari Then Exit Do 'その場でとどまっている場合に、ループから抜ける

Selection.Font.Underline = wdUnderlineDouble
Selection.Collapse Direction:=wdCollapseEnd


Loop

Selection.HomeKey Unit:=wdStory

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Font.Color = vbRed '赤
.Format = True '上記フォーマットを利用する
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With

'検索でヒットした文字列に二重下線をつける
Do While Selection.Find.Execute = True
owari = Selection.End '変数の使用 ""を選択としているために一番最後に、不都合が生じるため
If Selection.Start = owari Then Exit Do 'その場でとどまっている場合に、ループから抜ける

Selection.Font.Underline = wdUnderlineDouble
Selection.Collapse Direction:=wdCollapseEnd



Loop


Call DV二重線の検索

Selection.HomeKey Unit:=wdStory



End Sub


Sub DV二重線の検索()



Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Font.Underline = wdUnderlineDouble '二重下線を検索
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute


End Sub





Word: 蛍光ペンをつける

日本に帰ってきました。旅行先でPCがご臨終したので、旅行記は中断。
岡田名監督辞任、阪神V逸、ファンタジーの結果など書いてもいいこともあるが、省略。

ぼちぼち検索でヒットをのばすという方向性から、ちょっとしばらくマクロを書いてみます。

今日のお題は、数行マクロで蛍光ペンをつける



例えば、選択部分に黄色の蛍光ペンをつける命令は、以下。
  Selection.Range.HighlightColorIndex = wdYellow

ちょっと回りくどく、現在選択している蛍光ペンを黄色にした上で、現在選択されている蛍光ペンを塗るとすると以下。
Options.DefaultHighlightColorIndex = wdYellow
Application.Run MacroName:="Highlight"


これが、ツールバーと全く同じ効果ですね。

これだと選択範囲が無い場合、文書は何も変わりませんが、上のツールバーで蛍光ペンの表示がある場合、それが黄色になります。また、すでに黄色の蛍光ペンが塗られている箇所の場合、無色に戻ります。

下の場合、以下のようなマクロ(これはこれで完成型)となります。

Sub 黄色の蛍光ペンを付ける()
'Ctrl + alt + q ・・・・・ここはコメントです。
Options.DefaultHighlightColorIndex = wdYellow
Application.Run MacroName:="Highlight"

End Sub



まぁ、こういったものはショートカットをつけておかないとマクロよりマウスの方が早い。というわけで、次にショートカットの設定。

デフォルトで、ctrl+atl+sで、現在の蛍光ペンの色を塗るという設定になっています。従って、これの周りのキーに色を割り振るのが実際上便利です。

手作業の方法は、ツール->ユーザー設定->キーボードで、設定する方法。これで、例えば、ctrl+alt+aに緑、ctrl+alt+wに黄色とかよく使う設定をすることができます。

ショートカットの割り付けをマクロでやりたければ、

'黄色の蛍光ペンを付ける ctrl alt Q
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyQ, wdKeyControl, wdKeyAlt), _
KeyCategory:=wdKeyCategoryMacro, Command:="黄色の蛍光ペンを付ける"


といったかたちになります。

q,ctrl,altで、先ほど作った黄色の蛍光ペンを付けるというマクロを呼び出せという感じです。

最後に、蛍光ペンを消す(無色の蛍光ペンを付ける)方法は、下記。

Selection.Range.HighlightColorIndex = wdNoHighlight

または

  Options.DefaultHighlightColorIndex = wdNoHighlight
  Application.Run MacroName:="Highlight"

非常に簡単な数行マクロですが、蛍光ペンを多用する仕事をしている人には結構便利です。

私の環境では、ctrl + alt+ 以下のキーで、記載の効果としています。
q 黄色
w 無色
a 緑
s 現在選択している色

ご参考まで。よければ試してください。