VB/MSWord: add new page and copy contents + bookmarks

Posted on 2002-06-02
Medium Priority
Last Modified: 2008-02-01
Using VB I have to add new page to the beginning of the word document and put there same contents including
bookmarks and fields.Need urgent help,please send example!
Question by:soferstam

Accepted Solution

Monchanger earned 1200 total points
ID: 7049785
This should get you started, I covered the basics.
Help on this is available in your VBA help or at:

    ' Open word
    Dim myWord As Word.Application
    Set myWord = CreateObject("Word.Application")
'This is good for debuging while writing your code
'myWord.Visible = True

    ' Open our document
    Dim myDoc As Word.Document
    Set myDoc = myWord.Documents.Open(App.Path & "\Doc1.doc")  ' Enter the path to your document here

    ' Ranges are a basic part of all Office applications. Do some reading about them at :
' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odeopg/html/deovrtherangeobject.asp   
    Dim myRange As Word.Range
    ' Creation of new page at start of document
    ' Go to start of document
    Set myRange = myDoc.GoTo(wdGoToPage, wdGoToAbsolute, 1)
'Debug note: This would cause the document to center on the set range:
    ' Insert a pagebreak at the current location
    Selection.InsertBreak wdPageBreak
    Set myRange = Nothing
    ' Adding content to the first page
    ' Select start of this page
    Set myRange = myDoc.GoTo(wdGoToPage, wdGoToAbsolute, 1)
    ' Add text before cursor - this is like typing text using the keyboard,
    ' where you move the cursor forward.
    myRange.InsertAfter "This is new text"
    ' Add a carridge return
    myRange.InsertAfter vbCr
    ' Add a field
    myRange.InsertAfter "More text"
    Set myRange = Nothing
    ' Adding fields
    ' Let's put the filename at the start of page one
    Set myRange = myDoc.GoTo(wdGoToPage, wdGoToAbsolute, 1)
'    myRange.Select
    myDoc.Fields.Add myRange, , "FILENAME"

    ' Adding bookmarks
    ' Select the first page
    Set myRange = myDoc.GoTo(wdGoToPage, wdGoToAbsolute, 1)
    ' Add a bookmark - note that bookmark names cannot contain spaces (and various
    ' other characters)
    myDoc.Bookmarks.Add "Page_one", myRange
    ' Cleanup process:
    ' Save the document
    ' Close the document
    Set myDoc = Nothing
    ' Close word
    Set myWord = Nothing

BTW - I use Word 2000 (9.0). It is possible you might have a need a few slight changes if you use something else.

Hope this helps.
Good luck :-)

Expert Comment

ID: 7049786
I forgot to mention ....
Save your document before testing your code on it !!!

Expert Comment

ID: 7050839
This may help you,


Full Source Code available there.

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.


Author Comment

ID: 7051721
I'm getting error on Selection.InsertBreak saying object refurs to a "framed paragraph".It means probably that I have frames and Selection object got a frame in it.
Do you know how can I make sure to copy everything on a page,including frames,to a newly created page?
LVL 49

Expert Comment

ID: 7851375
Hi soferstam,
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will ask a Community Support Moderator to:

    Accept Monchanger's comment(s) as an answer.

soferstam, if you think your question was not answered at all or if you need help, just post a new comment here; Community Support will help you.  DO NOT accept this comment as an answer.

EXPERTS: If you disagree with that recommendation, please post an explanatory comment.
DanRollins -- EE database cleanup volunteer

Expert Comment

ID: 7912918
per recommendation

Community Support Moderator @Experts Exchange

Expert Comment

ID: 8260490
On one machine, office 10 (word 2002), it works fine.
But on the office 9 machine (word 2000) I had to change
Selection.InsertBreak wdPageBreak

myRange.InsertBreak wdPageBreak

because the selection objected was allegedly not defined (error 91) on the Word 2000 machine!

Be careful!

Featured Post

Train for your Pen Testing Engineer Certification

Enroll today in this bundle of courses to gain experience in the logistics of pen testing, Linux fundamentals, vulnerability assessments, detecting live systems, and more! This series, valued at $3,000, is free for Premium members, Team Accounts, and Qualified Experts.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses

588 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question