Solved

Word 2007 - Macro - The requested member of the collection does not exist

Posted on 2008-10-31
18
1,360 Views
Last Modified: 2012-05-05
Hi..
I recorded a macro that inserts a header - but get the following error

THE REQUESTED MEMBER OF THE COLLECTION DOES NOT EXIST

How to modify my macro to make it work on all documets?   I've read about moving it to NORMAL.DOT but don't understand how or why this will help.   thanks

 Selection.MoveDown Unit:=wdLine, Count:=5
    Selection.MoveLeft Unit:=wdCharacter, Count:=20
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.Copy
    Selection.MoveDown Unit:=wdLine, Count:=43
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
   
      ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader

** ERROR HERE

    ActiveDocument.AttachedTemplate.BuildingBlockEntries(" Blank").Insert _
        Where:=Selection.Range, RichText:=True
       
    Selection.PasteAndFormat (wdPasteDefault)
    ActiveDocument.AttachedTemplate.BuildingBlockEntries("Plain Number"). _
        Insert Where:=Selection.Range, RichText:=True
   
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="Page "
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
0
Comment
Question by:JElster
  • 10
  • 8
18 Comments
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
There is a extra space before the word Blank in " Blank". Perhaps that is the problem.

Before 2007, recorded macros go in the Normal template by default. I guess that it is still the same.
0
 
LVL 1

Author Comment

by:JElster
Comment Utility
I removed the blank - no diff.

It can not find the following -    
   ActiveDocument.AttachedTemplate.BuildingBlockEntries("Blank").Insert _
        Where:=Selection.Range, RichText:=True
0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
Yes. It means that there isn't a such an entry. BuildingBlockEntries are new to 2007, so I can't see if I have them.

I have tried to work out what your macro does. I thik this will  do the same thing.
Private Sub NumberinHeaders()

    Dim rng As Range

    

    Set rng = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Duplicate

    rng.Text = "Page "

    rng.Collapse wdCollapseEnd

    ActiveDocument.Fields.Add rng, wdFieldPage

End Sub

Open in new window

0
 
LVL 1

Author Comment

by:JElster
Comment Utility
I'm trying to copy the first line in a document -  The person it's addressed to  - and add that name
to the header on the next pages and add the page #.
thanks
0
 
LVL 1

Author Comment

by:JElster
Comment Utility
Hi.. This is what I have so far.. thanks


    ' Text to Copy to Header
    Selection.MoveDown Unit:=wdLine, Count:=3
    Selection.MoveLeft Unit:=wdCharacter, Count:=20, Extend:=wdExtend
    Selection.Copy
   
    Set sel = Selection
       
    Selection.MoveDown Unit:=wdLine, Count:=65
   
   
    ' Create Header
    Set rng = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Duplicate
       
       
   ' ???
   ' Paste Selection and add carriage return and add 'Page' and number

   ' Add Para betweeen Selection and Page Number

    Selection.PasteAndFormat (wdPasteDefault)
   
    rng.Text = Paragraph & "Page "
   
    'Close Header
    rng.Collapse wdCollapseEnd
    ActiveDocument.Fields.Add rng, wdFieldPage

   
   
   
   
0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
I'm not sure it that works. If not, try this
    Dim rng As Range

    

    ActiveDocument.Range(0, 0).Select

    Selection.MoveDown Unit:=wdLine, Count:=3

    Selection.MoveLeft Unit:=wdCharacter, Count:=20, Extend:=wdExtend

    Selection.Copy

   

    Set rng = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Duplicate

   ' ???

   ' Paste Selection and add carriage return and add 'Page' and number
 
 

    rng.PasteAndFormat (wdPasteDefault)

    rng.Collapse wdCollapseEnd

   ' Add Para betweeen Selection and Page Number

    

    rng.Text = vbCr & "Page "

    rng.Collapse wdCollapseEnd

    

    ActiveDocument.Fields.Add rng, wdFieldPage

Open in new window

0
 
LVL 1

Author Comment

by:JElster
Comment Utility
Works.. but the header is double spaced - so it show up like

George Washington

Page  2


how can I make is single spaced.. thanks again
0
 
LVL 76

Accepted Solution

by:
GrahamSkan earned 500 total points
Comment Utility
I can't be sure why it is double-spaced, but I would guess that the line containing the name already has a pargraph mark or a newline character to end it. In that cse we don't need to add on in the code.
 Dim rng As Range

    

    ActiveDocument.Range(0, 0).Select

    Selection.MoveDown Unit:=wdLine, Count:=3

    Selection.MoveLeft Unit:=wdCharacter, Count:=20, Extend:=wdExtend

    Selection.Copy

   

    Set rng = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Duplicate

   ' ???

   ' Paste Selection and add carriage return and add 'Page' and number

 

 

    rng.PasteAndFormat (wdPasteDefault)
 

   ' Add Page text and number to next paragraph

    rng.Collapse wdCollapseEnd

    rng.Text = "Page "
 

    rng.Collapse wdCollapseEnd

    ActiveDocument.Fields.Add rng, wdFieldPage

Open in new window

0
 
LVL 1

Author Comment

by:JElster
Comment Utility
If I remove it

I get

'George Washington Page 2'

any final ideas.. thanks again
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 1

Author Comment

by:JElster
Comment Utility
It appears the header is double spaced.. by default ?
How I programmaticall switch it to single
thanks
0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
Try setting the line spacing for the header to Single:

    ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Paragraphs.Space1

Open in new window

0
 
LVL 1

Author Comment

by:JElster
Comment Utility
Where do I add this?
thanks
0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
I think that it would work anywhere in the macro, but, to be sure, put it at the end.
0
 
LVL 1

Author Comment

by:JElster
Comment Utility
It's doesn't seem to work... any more ideas.. thanks
0
 
LVL 1

Author Closing Comment

by:JElster
Comment Utility
Thanks again
0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
Perhaps it is SpaceBefore or SpaceAfter.

Try these at the end of the macro:

    ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Paragraphs.SpaceBefore = 0

    ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Paragraphs.SpaceAfter = 0

Open in new window

0
 
LVL 1

Author Comment

by:JElster
Comment Utility
That's it! Thanks!
0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
That's good news. Thanks for letting me know. Next time that spacing question arises I'll try all three straight-away
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

There is a feature provided by MS Word that lets you create an Table of Contents for your Word document automatically. To use this feature for other documents there are two steps involved,   1.  Prepare your document for a table of contents (he…
I would like to show you some basics you can do with Mailings in MS Word. It´s quite handy feature you can use for creating envelopes, labels, personalized letters etc. First question could be what is this feature good for? Mailing can really he…
This video shows and describes the main difference between both orientations in Microsoft Word. Viewers will understand when to use each orientation and how to get the most out of them.
In a previous video Micro Tutorial here at Experts Exchange (http://www.experts-exchange.com/videos/1358/How-to-get-a-free-trial-of-Office-365-with-the-Office-2016-desktop-applications.html), I explained how to get a free, one-month trial of Office …

763 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now