文字列にブックマークを追加できます。文字列を選択した状態でブックマークを追加すれば、ブックマークに文字列が含まれるため、この文字列を相互参照できます。
文字列を選択せずにブックマークを設定した場合には、ブックマークには文字列が含まれません。この場合には、文字列を相互参照した場合に、空欄になります。
以下の例では、BM1という名前で追加したブックマークは文字列を含んでいません。ブックマークの記号がキャレットになっています。(ブックマークを表示する方法は、こちらの記事「Word 2013・2010・2007のブックマーク関連機能(インストラクターのネタ帳)」をご覧ください)
フィールドを非表示するとどうなるか。。。
以下のように空欄になってしまいます。
この場合、フィールドを更新したときに参照先の文字列が空ではありますが、参照先自体は存在しているので、エラーメッセージ「エラー! 参照元が見つかりません。」が表示されません。
そのため、参照先が表示されていないことに気がつかないまま書類を納品してしまうことがありうるので困ります。
手動でブックマークを追加している場合には起きない事例かも知れませんが、マクロで自動的にブックマークを追加するときにはこのようなことが起こりえます。注意が必要です。
このマクロでできること
相互参照のフィールドの参照先の文字が空の場合に、コメントを挿入します。
(実行前)
(実行後)
マクロの解説
フィールドオブジェクトのRangeオブジェクトを取得する場合には、Resultプロパティを使います。(11行目)
Rangeオブジェクトを取得してしまえば、Rangeオブジェクト内の文字列を確認したりRangeオブジェクトの位置にコメントを挿入したりできますね。
マクロ
Sub 相互参照先の文字列の有無を確認する() Dim myField As Field Dim myRange As Range ActiveDocument.Fields.Update DoEvents For Each myField In ActiveDocument.Fields If myField.Type = wdFieldRef Then Set myRange = myField.Result If myRange.Text = "" Then myRange.Comments.Add Range:=myRange, _ Text:="参照先確認要" End If End If Next Set myRange = Nothing End Sub