매크로에서 페이지 범위 복사 (Microsoft Word)
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에 적용됩니다.