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_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (522)은 Microsoft Word 97, 2000, 2002 및 2003에 적용됩니다. Word의 리본 인터페이스에 대한이 팁 버전 (Word 2007)을 찾을 수 있습니다. 이후) 여기 :

link : / wordribbon-Including_Headers_and_Footers_when_Selecting_All [모두 선택시 머리글 및 바닥 글 포함].