Kevin은 VBA에 페이지 범위를 복사하는 방법이 있는지 궁금합니다. 그는 단락과 연속 된 텍스트 범위를 복사하는 방법을 알고 있지만 전체 페이지를 복사하는 방법은 모릅니다.

단락이있는 것처럼 전체 페이지를 참조하는 VBA 개체도없고 페이지를 선택할 수있는 VBA 문도 없습니다. 그러나 페이지를 구성 할 항목을 계산 한 다음 해당 범위를 선택할 수 있습니다. 일반적인 개념은 다음 매크로에 표시됩니다.

Sub CopyPages1()

Dim rCopy As Range

Set rCopy = ActiveDocument.GoTo(What:=wdGoToPage, _       Which:=wdGoToAbsolute, Count:=7)

Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=9

rCopy.End = Selection.Bookmarks("\Page").Range.End

rCopy.Select End Sub

이 매크로는 7 페이지가 시작되는 지점과 동일한 rCopy 범위를 설정합니다.

그런 다음 9 페이지의 맨 처음에있는 텍스트를 선택하고 Word의 기본 제공 책갈피 중 하나를 사용하여 7 페이지의 상단에서 9 페이지의 끝까지 선택합니다. (이 매크로는 7 페이지를 선택하도록 설계되었습니다. 9까지)

그러나 Word에서는 페이지가 매우 유동적이라는 점에 유의해야합니다. 두 개의 다른 시스템에서 똑같은 문서를 사용하는 경우 위의 매크로는 완전히 다른 선택을 반환 할 수 있습니다. 왜? 페이지는 각 시스템에서 다르게 흐를 수 있기 때문입니다.

선택한 페이지 (7 ~ 9)를 실제로 복사하려면 매크로를 약간 수정하여 원하는 결과를 얻을 수 있습니다.

Sub CopyPages2()

Dim rCopy As Range     Dim rCurrent As Range

Set rCurrent = Selection.Range

Set rCopy = ActiveDocument.GoTo(What:=wdGoToPage, _       Which:=wdGoToAbsolute, Count:=7)

Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=9

rCopy.End = Selection.Bookmarks("\Page").Range.End     rCopy.Copy     Documents.Add     ActiveDocument.Range.PasteSpecial

rCurrent.Select End Sub

매크로는 사용자가 실행하기 전에 선택한 내용을 “기억”하여 rCurrent 변수에 범위를 저장하고 매크로 끝에서 해당 영역을 다시 선택하는 데 사용합니다. 선택한 페이지 (다시 7-9)가 새로운 문서로 복사됩니다.

위의 매크로는 현재 문서에 실제로 최소 9 페이지가있는 경우에만 제대로 작동합니다. 더 유연하고 강력한 매크로를 원한다면 다음과 같은 변형을 고려할 수 있습니다.

Sub CopyPages3()

Dim rCopy As Range     Dim rCurrent As Range     Dim sTemp As String     Dim i As Integer     Dim iStart As Integer     Dim iEnd As Integer          Set rCurrent = Selection.Range

' Get page numbers to be copied     sTemp = InputBox("Page range to copy (use format 6-7)", "")

i = InStr(sTemp, "-")

If i > 0 Then         iStart = Val(Left(sTemp, i - 1))

iEnd = Val(Mid(sTemp, i + 1))

If iStart < 1 Then iStart = 1         If iEnd < iStart Then iEnd = iStart         With ActiveDocument.Range             If iStart > .Information(wdNumberOfPagesInDocument) Then                 iStart = .Information(wdNumberOfPagesInDocument)

End If             If iEnd > .Information(wdNumberOfPagesInDocument) Then                 iEnd = .Information(wdNumberOfPagesInDocument)

End If         End With

' Set the range         Set rCopy = ActiveDocument.GoTo(What:=wdGoToPage, _           Which:=wdGoToAbsolute, Count:=iStart)

Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, _           Count:=iEnd         rCopy.End = Selection.Bookmarks("\Page").Range.End                  ' Copy range to a new document         rCopy.Copy         Documents.Add         ActiveDocument.Range.PasteSpecial

rCurrent.Select     Else         If sTemp > "" Then             MsgBox "There is no dash character"

End If     End If End Sub

이 버전은 사용자에게 복사 할 페이지 범위를 지정하도록 요청합니다. 페이지 번호는 시작 번호가 끝 번호보다 작거나 같도록 조정되며 시작 번호와 끝 번호 모두 문서의 총 페이지 수보다 작도록합니다.

_ 참고 : _

이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 인기있는 워드 프로세싱 소프트웨어입니다.)이 팁 (5295)은 Microsoft Word 2007, 2010, 2013, 2016, 2019 및 Office 365의 Word에 적용됩니다.