Williamは、ドキュメントのフッターのテキストボックスにあるテーブルにファイル名を挿入する必要があります(そのようにするのはクライアントの要件です)。

彼は、ドキュメントを保存するたびに、または少なくとも「名前を付けて保存」を使用して新しいファイルを作成するときに、そのファイル名を自動的に更新することを望んでいます。

WilliamはFILENAMEフィールドを挿入しましたが、フッターを開いてクリックし、F9キーを押して更新することを忘れないでください。彼はそれを自動的に行うよりも好むでしょう。

歴史的に、Wordは、ドキュメントが最終的に印刷されることを理解して開発されました。 (これは、ほとんどのタスクをオンラインで電子的に行う時代の前でした。)この歴史的理解に関連する成果物の1つは、印刷するまでWordがフィールドを更新しないことです。したがって、保存や名前を付けて保存などの他のタスクを実行しても、フィールドは更新されません。

この理解を念頭に置いて、あなたができることがいくつかあります。 1つ目は、Wordをだまして印刷していると思わせることです。ただし、この「トリック」を実行する前に、次の手順に従う必要があります。

。 [Wordのオプション]ダイアログボックスを表示します。 (Word 2007では、[Office]ボタンをクリックし、[Wordのオプション]をクリックします。Word2010以降のバージョンでは、リボンの[ファイル]タブを表示し、[オプション]をクリックします。)

。ダイアログボックスの左側にある[表示]をクリックします。 (図1を参照)

。 [印刷前にフィールドを更新する]チェックボックスがオンになっていることを確認します。

。ダイアログボックスの左側にある[詳細]をクリックします。

。 [印刷]セクションが表示されるまで下にスクロールします。 (図2を参照)

。 [印刷前に更新するために追跡された変更を含むフィールドを許可する]チェックボックスがオンになっていることを確認します。

。 [OK]をクリックして変更を保存します。

これで、フィールドを更新するときに行う必要があるのは、Ctrl + Pを押すことだけです。これにより、[印刷]ダイアログボックス(Word 2007)または印刷オプション(新しいバージョンのWord)が表示されます。この時点で、Wordは印刷することを予期しているため、ドキュメントのフィールドを更新する必要があります。 Escキーを押すか、リボンの[ホーム]タブをクリックして印刷を中止できます。ドキュメントのすべてのフィールドが更新されていることに注意してください。

マクロを使用してこれらのタスクを実行することもできます。次のマクロは、[Wordのオプション]ダイアログボックスの設定を変更しませんが、Wordをだましてフィールドを更新させるのに十分な印刷シーケンスを実行します。

Sub UpdateAllFields()

With ActiveDocument         .PrintPreview         .ClosePrintPreview     End With End Sub

必要に応じて、実行できる別のマクロアプローチがあります。このアプローチは、あらゆるトリックをバイパスし、代わりに、各「ストーリー」をステップスルーします

ドキュメント内で、それらのストーリーで見つかったフィールドを更新します。 (「ストーリー」

は、ドキュメント内のレイヤーとして表示するのが最適です。メインドキュメントは、1つのストーリー、ヘッダーとフッター、別のグラフィックなどです。)このアプローチでは実際に2つのマクロが使用されます。更新プロセスを開始するには、UpdateAllFieldsマクロを実行します。

Sub UpdateAllFields()

Dim objStory As Range     Dim objTOC As TableOfContents     Dim objTOA As TableOfAuthorities     Dim objTOF As TableOfFigures     Dim objIndex As Index

Application.ScreenUpdating = False     Application.DisplayAlerts = wdAlertsNone

For Each objStory In ActiveDocument.StoryRanges         UpdateFieldsInStory objStory

While Not (objStory.NextStoryRange Is Nothing)

Set objStory = objStory.NextStoryRange             UpdateFieldsInStory objStory         Wend     Next             For Each objTOC In ActiveDocument.TablesOfContents         objTOC.Update     Next

For Each objTOA In ActiveDocument.TablesOfAuthorities         objTOA.Update     Next

For Each objTOF In ActiveDocument.TablesOfFigures         objTOF.Update     Next

For Each objIndex In ActiveDocument.Indexes         objIndex.Update     Next

Application.DisplayAlerts = wdAlertsAll     Application.ScreenUpdating = True End Sub
Private Sub UpdateFieldsInStory(iobjStory As Range)

Dim objShape As Shape

With iobjStory         .Fields.Update

Select Case .StoryType             Case wdMainTextStory, wdPrimaryHeaderStory, _               wdPrimaryFooterStory, wdEvenPagesHeaderStory, _               wdEvenPagesFooterStory, wdFirstPageHeaderStory, _               wdFirstPageFooterStory

For Each objShape In .ShapeRange                     With objShape.TextFrame                         If .HasText Then .TextRange.Fields.Update                     End With                 Next         End Select     End With End Sub

マクロを使用したフィールドの更新の詳細については、GregMaxeyのサイトのこのページにアクセスしてください。 「フィールドの更新」というタイトルのセクションに特に注意してください:

http://gregmaxey.mvps.org/word_tip_pages/word_fields.html

お分かりのように、ドキュメント内のすべてのフィールドを更新するのは必ずしも簡単ではありません。 Microsoftはそのような機能を簡単に追加できるように思われるかもしれませんが、長年の橋渡しをしても、Wordにはまだそのような機能がありません。 Microsoftに機能を追加してもらいたい場合は、UserVoiceフォーラムにアクセスして、そのような機能に投票してください。

https://word.uservoice.com/forums/304924-word-for-windows-desktop-application/suggestions/11685894

注:

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

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

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(13475)は、Microsoft Word 2007、2010、2013、および2016に適用されます。