Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2008-10-31
18
Medium Priority
?
1,457 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
[Webinar] Cloud Security

In this webinar you will learn:

-Why existing firewall and DMZ architectures are not suited for securing cloud applications
-How to make your enterprise “Cloud Ready”, and fix your aging DMZ architecture
-How to transform your enterprise and become a Cloud Enabler

 
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 2000 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

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

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

Introduction This tutorial provides instructions on how to properly format your Word document using the inbuilt tools provided. The benefits of using these tools means your documents are more accessible and easily portable to other applications an…
A few years ago I was very much a beginner at VBA, and that very much remains the case today.  I'll do my best to explain things as I go in the hope that other beginners can follow.  If you just want to check out a tool that creates a Select Case fu…
This video walks the viewer through the process of creating envelopes and labels, with multiple names and addresses. Navigate to the “Start Mail Merge” button in the Mailings tab: Follow the step-by-step process until asked to find the address doc…
Learn how to make your own table of contents in Microsoft Word using paragraph styles and the automatic table of contents tool. We'll be using the paragraph styles in Word’s Home toolbar to help you create a table of contents. Type out your initial …

916 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