相互参照の形式の制御(Microsoft Word)
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は、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(8479)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice 365のWordに適用されます。このヒントのバージョンは、ここにWordの古いメニューインターフェイス:
link相互参照のフォーマットの制御。