Obtain the RANGE for the head of the current page (Word2003)

User avatar
ChrisGreaves
PlutoniumLounger
Posts: 15635
Joined: 24 Jan 2010, 23:23
Location: brings.slot.perky

Obtain the RANGE for the head of the current page (Word2003)

Post by ChrisGreaves »

This works, I think, but I'd be interested to learn of a more concise method, or of any pitfalls.
I want to insert a section break at the start of the page which contains the selection point, and didn't want to use GoTo and have to mess around with preserving the user's selection and restoring same.

Code: Select all

Function rngHeadOfPage(rng As Range) As Range
    Dim lngPage As Long
    lngPage = lngGetPageNumber(rng, wdActiveEndPageNumber)
    Dim objPage As Page
    Set objPage = ActiveDocument.ActiveWindow.Panes(1).Pages.Item(lngPage)
    Set rngHeadOfPage = objPage.Breaks(1).Range
End Function
Sub TESTrngHeadOfPage()
    rngHeadOfPage(Selection.Range).Select
End Sub
There's nothing heavier than an empty water bottle

User avatar
HansV
Administrator
Posts: 78523
Joined: 16 Jan 2010, 00:14
Status: Microsoft MVP
Location: Wageningen, The Netherlands

Re: Obtain the RANGE for the head of the current page (Word2

Post by HansV »

Word keeps track of the "current" page in a hidden bookmark named \page. You could use this bookmark:

Code: Select all

Sub InsertBreakAtTopOfPage()
    Dim rng As Range
    Set rng = ActiveDocument.Bookmarks("\page").Range
    rng.Collapse
    rng.InsertBreak Type:=wdSectionBreakNextPage
End Sub
Best wishes,
Hans

User avatar
ChrisGreaves
PlutoniumLounger
Posts: 15635
Joined: 24 Jan 2010, 23:23
Location: brings.slot.perky

Re: Obtain the RANGE for the head of the current page (Word2

Post by ChrisGreaves »

HansV wrote:Word keeps track of the "current" page in a hidden bookmark named \page. You could use this bookmark:

Code: Select all

Set rng = ActiveDocument.Bookmarks("\page").Range
I knew that!
(I just forgot it ... :sheepishgrin:)

Thanks Hans!
There's nothing heavier than an empty water bottle

User avatar
Sundog
5StarLounger
Posts: 704
Joined: 28 Jan 2010, 22:47
Location: Alien Country (Roswell NM)

Re: Obtain the RANGE for the head of the current page (Word2

Post by Sundog »

HansV wrote:Word keeps track of the "current" page in a hidden bookmark named \page.
Verrry interesting! It seems that the \page bookmark may have another use: F5 > > Go To > \page > selects all the text on the current page. Potentially useful to copy everything on a page if you're on a long page, in Split Screen mode, at 200%, etc.

["Good question, Chris!"] Welcome information, Hans; thanks!
Sundog

User avatar
HansV
Administrator
Posts: 78523
Joined: 16 Jan 2010, 00:14
Status: Microsoft MVP
Location: Wageningen, The Netherlands

Re: Obtain the RANGE for the head of the current page (Word2

Post by HansV »

There is a whole slew of predefined bookmarks - search the Word VBA help or Google. Here is a list:
\SelCurrent selection or the insertion point.
\PrevSel1Most recent selection where editing occurred; going to this bookmark is equivalent to running the GoBack method once.
\PrevSel2Second most recent selection where editing occurred; going to this bookmark is equivalent to running the GoBack method twice.
\StartOfSelStart of the current selection.
\EndOfSelEnd of the current selection.
\LineCurrent line or the first line of the current selection. If the insertion point is at the end of a line that is not the last line in the paragraph, the bookmark includes the entire next line.
\CharCurrent character, which is the character following the insertion point if there is no selection, or the first character of the selection.
\ParaCurrent paragraph, which is the paragraph containing the insertion point or, if more than one paragraph is selected, the first paragraph of the selection. Note that if the insertion point or selection is in the last paragraph of the document, the "\Para" bookmark does not include the paragraph mark.
\SectionCurrent section, including the break at the end of the section, if any. The current section contains the insertion point or selection. If the selection contains more than one section, the "\Section" bookmark is the first section in the selection.
\DocEntire contents of the active document, with the exception of the final paragraph mark.
\PageCurrent page, including the break at the end of the page, if any. The current page contains the insertion point. If the current selection contains more than one page, the "\Page" bookmark is the first page of the selection. Note that if the insertion point or selection is in the last page of the document, the "\Page" bookmark does not include the final paragraph mark.
\StartOfDocBeginning of the document.
\EndOfDocEnd of the document.
\CellCurrent cell in a table, which is the cell containing the insertion point. If one or more cells of a table are included in the current selection, the "\Cell" bookmark is the first cell in the selection.
\TableCurrent table, which is the table containing the insertion point or selection. If the selection includes more than one table, the "\Table" bookmark is the entire first table of the selection, even if the entire table is not selected.
\HeadingLevelThe heading that contains the insertion point or selection, plus any subordinate headings and text. If the current selection is body text, the "\HeadingLevel" bookmark includes the preceding heading, plus any headings and text subordinate to that heading.
Best wishes,
Hans

User avatar
Sundog
5StarLounger
Posts: 704
Joined: 28 Jan 2010, 22:47
Location: Alien Country (Roswell NM)

Re: Obtain the RANGE for the head of the current page (Word2

Post by Sundog »

Thanks for the listing! Especially valuable: The "final paragraph" notes.
Sundog