Kevin fragt sich, ob es in VBA eine Möglichkeit gibt, eine Reihe von Seiten zu kopieren. Er weiß, wie man Absätze und einen zusammenhängenden Textbereich kopiert, aber er weiß nicht, wie man ganze Seiten kopiert.

Es gibt weder ein VBA-Objekt, das auf eine ganze Seite verweist, z. B. einen Absatz, noch eine VBA-Anweisung, mit der Sie eine Seite auswählen können. Sie können jedoch berechnen, was eine Seite umfassen würde, und dann diesen Bereich auswählen. Das allgemeine Konzept wird in diesem Makro gezeigt:

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

Dieses Makro setzt den rCopy-Bereich auf den Punkt, an dem Seite 7 beginnt.

Anschließend wird der Text ganz am Anfang von Seite 9 ausgewählt und mithilfe eines der in Word integrierten Lesezeichen vom Anfang von Seite 7 bis zum Ende von Seite 9 ausgewählt. (Zu diesem Zweck wurde dieses Makro entwickelt: Wählen Sie Seiten 7 aus bis 9.)

Sie sollten jedoch beachten, dass Seiten in Word sehr flüssig sind. Wenn Sie genau dasselbe Dokument auf zwei verschiedenen Systemen verwenden, gibt das obige Makro möglicherweise ganz unterschiedliche Auswahlen zurück. Warum? Weil die Seiten auf jedem System unterschiedlich fließen können.

Wenn Sie die ausgewählten Seiten (7 bis 9) tatsächlich kopieren möchten, können Sie das Makro nur geringfügig ändern, um das gewünschte Ergebnis zu erzielen.

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

Beachten Sie, dass sich das Makro „merkt“, was der Benutzer vor seiner Ausführung ausgewählt hat, indem es den Bereich in der Variablen rCurrent speichert und damit diesen Bereich am Ende des Makros erneut auswählt. Die ausgewählten Seiten (wieder 7 bis 9) werden in ein brandneues Dokument kopiert.

Sie sollten beachten, dass die oben genannten Makros nur dann ordnungsgemäß funktionieren, wenn das aktuelle Dokument tatsächlich mindestens 9 Seiten enthält. Wenn Sie ein flexibleres und robusteres Makro wünschen, können Sie die folgende Variante in Betracht ziehen.

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

Diese Version fordert den Benutzer auf, einen zu kopierenden Seitenbereich anzugeben. Die Seitenzahlen werden angepasst, um sicherzustellen, dass die Startnummer kleiner oder gleich der Endnummer ist und sowohl die Start- als auch die Endnummer kleiner als die Gesamtzahl der Seiten im Dokument sind.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (5295) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365.