Timは、テンプレート内のすべてのフィールドを更新するための単純なマクロを作成しました。マクロには、Ctrl + Aを押すのと同じように、ドキュメント全体を選択するステップが含まれています。この手順ではヘッダーとフッターは選択されません。Timは、これらの場所に更新されるフィールドがある可能性があることを恐れています。彼は、すべてを選択するときにヘッダーとフッターを含める方法があるのか​​、それともマクロがヘッダーまたはフッター領域のフィールドを更新する別の方法があるのか​​疑問に思います。

簡単な答えは、マクロコードを変更して、フィールドが存在する可能性のあるすべての異なるWord領域を検索する必要があるということです。 「すべて選択」アプローチを使用する場合の問題は、メインドキュメント内のテキストのみを選択することです。ヘッダー、フッター、およびその他の多くの要素は、ドキュメントのすべてのテキストで選択されないように、独自の個別のレイヤーで維持されます。

メインテキストとヘッダーとフッターのフィールドを更新したいだけの場合は、次のような手法を使用する必要があります。

Sub MyUpdateFields1()

ActiveDocument.StoryRanges(wdMainTextStory).Fields.Update     ActiveDocument.StoryRanges(wdPrimaryFooterStory).Fields.Update     ActiveDocument.StoryRanges(wdPrimaryHeaderStory).Fields.Update End Sub

ドキュメントのさまざまなレイヤーは「ストーリー」と呼ばれ、独自のコレクション内で維持されることに注意してください。この単純なマクロは、メインテキスト、フッター、およびヘッダーを含むストーリーのフィールドを非常にすばやく更新しますが、他のストーリー(レイヤー)があります

更新が必要なフィールドがある可能性があります。次のマクロは、タイプに関係なく、各ストーリーを調べ、必要な更新を行います。

Sub MyUpdateFields2()

Dim story As Word.Range

For Each story In ActiveDocument.StoryRanges         Do             story.Fields.Update             ' Check linked stories as linked stories are not independent             Set story = story.NextStoryRange         Loop Until (story Is Nothing)

Next End Sub

ただし、本当に完成させたい場合は、確認する必要のあるさまざまなストーリーレイヤーだけではありません。たとえば、更新が必要なテキストボックス内のフィールドがいくつかある可能性があります。フィールドが配置される可能性のある他のすべての場所を処理するには、より包括的なマクロが必要です。次の例では、フィールドをチェックできるドキュメントのさまざまな要素に注意してください。

Sub MyUpdateFields3()

Dim doc As Document ' Pointer to Active Document     Dim wnd As Window ' Pointer to Document's Window     Dim lngMain As Long ' Main Pane Type Holder     Dim lngSplit As Long ' Split Type Holder     Dim lngActPane As Long ' ActivePane Number     Dim rngStory As Range ' Range Objwct for Looping through Stories     Dim TOC As TableOfContents ' Table of Contents Object     Dim TOA As TableOfAuthorities 'Table of Authorities Object     Dim TOF As TableOfFigures 'Table of Figures Object     Dim shp As Shape

' Set Objects     Set doc = ActiveDocument     Set wnd = ActiveDocument.ActiveWindow

' get Active Pane Number     lngActPane = wnd.ActivePane.Index

' Hold View Type of Main pane     lngMain = wnd.Panes(1).View.Type

' Hold SplitSpecial     lngSplit = wnd.View.SplitSpecial

' Get Rid of any split     wnd.View.SplitSpecial = wdPaneNone

' Set View to Normal     wnd.View.Type = wdNormalView

' Loop through each story in doc to update     For Each rngStory In doc.StoryRanges         If rngStory.StoryType = wdCommentsStory Then             Application.DisplayAlerts = wdAlertsNone             ' Update fields             rngStory.Fields.Update             Application.DisplayAlerts = wdAlertsAll         Else            ' Update fields            rngStory.Fields.Update         End If     Next

For Each shp In doc.Shapes         With shp.TextFrame             If .HasText Then                 shp.TextFrame.TextRange.Fields.Update             End If         End With     Next

' Loop through TOC and update     For Each TOC In doc.TablesOfContents         TOC.Update     Next

' Loop through TOA and update     For Each TOA In doc.TablesOfAuthorities         TOA.Update     Next

' Loop through TOF and update     For Each TOF In doc.TablesOfFigures         TOF.Update     Next

' Return Split to original state     wnd.View.SplitSpecial = lngSplit

' Return main pane to original state     wnd.Panes(1).View.Type = lngMain

' Active proper pane     wnd.Panes(lngActPane).Activate

' Close and release all pointers     Set wnd = Nothing     Set doc = Nothing End Sub

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

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(11489)は、Microsoft Word 2007および2010に適用されます。Wordの古いメニューインターフェイス用のこのヒントのバージョンは、