フィールドの自動更新(Microsoft Word)
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に適用されます。