Stephenは、Wordによって挿入される相互参照の形式を制御できるかどうか尋ねました。表1や図12などのラベルと番号を挿入するときは、ラベルを小文字(表、図)にし、ラベルと番号の間に改行なしのスペースを入れます。

Wordでこのタイプの相互参照フォーマットを制御する方法はありません。相互参照は、配置後に手動で変更できることは明らかですが、フィールドを更新するたびに、元のWordで選択された形式が使用されます。試すことができるマクロベースのソリューションがいくつかあります。最初の解決策は、フィールドに使用される実際のフィールドコードを変更します:

Sub FieldRefChanges1()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 'add format switch with lowercase option to field codes                 oFld.Code.Text = oFld.Code.Text & "\* lower "

'updates the field results to display the new format                 oFld.Update             End If         Next oFld     Next oStoryRng End Sub

マクロには、ネストされたForループがいくつか含まれています。最初の1つはドキュメントの各ストーリーをステップスルーし、2つ目は各ストーリーの各フィールドを通過します。次に、Ifステートメントを使用して、フィールドがREFフィールド(相互参照に使用される種類)であり、フィールドの結果が2ワード以下であることを確認します(表1または図12を参照)。

これらの基準が満たされている場合、マクロは実際のフィールドコードに変更を加え、フィールドが小文字で表示されるようにするスイッチを追加します。

このマクロにはいくつかの欠点があります。まず、複数回実行すると、\ *下のスイッチがREFフィールドに複数回追加されます。第2に、マクロはフィールド結果のスペースをノーブレークスペースに変更しません。

両方の問題を克服するには、マクロを変更するだけで、マクロの結果を変更するために実行する手動プロセスが自動化されます。

Sub FieldRefChanges2()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field     Dim sTemp As String     Dim J As String

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 sTemp = oFld.Result.Text                 sTemp = LCase(sTemp)

J = InStr(sTemp, " ")

sTemp = Left(sTemp, J - 1) & Chr(160) & _                   Mid(sTemp, J + 1, Len(sTemp) - J)

oFld.Result.Text = sTemp             End If         Next oFld     Next oStoryRng End Sub

このマクロは、フィールドの結果テキストと厳密に連動することを除いて、基本的に前のマクロと同じです。テキストはsTemp変数に割り当てられ、その後小文字に変換されます。スペースの位置が決定され、改行しないスペースに置き換えられます。次に、結果がフィールドの結果テキストに詰め込まれます。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(141)は、Microsoft Word 97、2000、2002、および2003に適用されます。Wordのリボンインターフェイス(Word 2007)用のこのヒントのバージョンを見つけることができます。以降)ここ: