Solved

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

Posted on 2008-10-31
18
1,396 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
ID: 22850337
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
ID: 22850396
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
ID: 22851312
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
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
LVL 1

Author Comment

by:JElster
ID: 22851649
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
ID: 22918149
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
ID: 22918379
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
ID: 22918441
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
ID: 22919987
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
ID: 22921316
If I remove it

I get

'George Washington Page 2'

any final ideas.. thanks again
0
 
LVL 1

Author Comment

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

Expert Comment

by:GrahamSkan
ID: 22921438
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
ID: 22921876
Where do I add this?
thanks
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 22922893
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
ID: 22924121
It's doesn't seem to work... any more ideas.. thanks
0
 
LVL 1

Author Closing Comment

by:JElster
ID: 31512019
Thanks again
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 22924309
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
ID: 22924377
That's it! Thanks!
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 22924600
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 Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

When creating Microsoft Word-based forms there may be a need to have a form field repeated throughout the whole document. For instance, with a company name, you may want this information repeated automatically throughout the document rather than man…
The Selection object is designed for user interaction. It has a Range property, so it can be used in most places that a Range object can. Recorded macros must use the Selection because they are simply copying what the user is doing. A Range prope…
In this video, we show how to convert an image-only PDF file into a PDF Searchable Image file, that is, a file with both the image (typically from scanning) and text, which is created in an automated fashion with Optical Character Recognition (OCR) …
This video walks the viewer through the process of creating an MLA formatted document, as well as a bibliography with citations.

756 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