すべてを選択するときにヘッダーとフッターを含める(Microsoft Word)
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は、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(522)は、Microsoft Word 97、2000、2002、および2003に適用されます。Wordのリボンインターフェイス(Word 2007)用のこのヒントのバージョンを見つけることができます。以降)ここ: