Problems creating Macros

G

Gabe

I'm trying to create a macro to change my margins, make a document have 2
cols., and insert a page number at the end of the page using a keybord
command.
No matter how I try or which order I try these steps, I get the debug error
5941.
I don't know what that means, I don't know what i've done wrong.

Can anybody help?

Thanks,

Gabe
 
S

Suzanne S. Barnhill

Can you explain why you're using a macro instead of a template for this?
 
S

StevenM

Assuming you need more than one page setup, you might try modifing the
following to your needs. If you only need one page setup, you should create a
new template.

Sub TestPageSetup()
Dim nColumns As Long
Dim pColWidth As Single
Dim pColGutter As Single
Dim pTop As Single
Dim pBottom As Single
Dim pLeft As Single
Dim pRight As Single
Dim pWidth As Single
Dim oRange As Range
Dim footerRange As Range

pTop = 6
pBottom = 6
pLeft = 6.5
pRight = 6.5
pColGutter = 3
nColumns = 2
pColWidth = (51 - (pColGutter + pRight + pLeft)) / nColumns

Set oRange = ActiveDocument.Range(Start:=ActiveDocument.Range.Start,
End:=ActiveDocument.Range.End)

With oRange.PageSetup
.TopMargin = PicasToPoints(pTop)
.BottomMargin = PicasToPoints(pBottom)
.LeftMargin = PicasToPoints(pLeft)
.RightMargin = PicasToPoints(pRight)
End With

With oRange.PageSetup.TextColumns
.SetCount NumColumns:=nColumns
.EvenlySpaced = True
.LineBetween = False
.Width = PicasToPoints(pColWidth)
.Spacing = PicasToPoints(pColGutter)
End With

Set footerRange = oRange.Sections(1).Footers(wdHeaderFooterPrimary).Range

With footerRange
.Delete
With .ParagraphFormat.TabStops
.ClearAll
pWidth = 51 - (pLeft + pRight)
.Add Position:=PicasToPoints(pWidth / 2),
Alignment:=wdAlignTabCenter
.Add Position:=PicasToPoints(pWidth), Alignment:=wdAlignTabRight
End With
.InsertAfter vbTab & vbTab & "Page "
.MoveEnd unit:=wdCharacter, Count:=1
.Collapse wdCollapseEnd
oRange.Fields.Add Range:=footerRange, Type:=wdFieldPage
.MoveEnd unit:=wdCharacter, Count:=1
.Collapse wdCollapseEnd
.InsertAfter vbCr
End With
End Sub
 
G

Gabe

I guess I should have said I'm trying to RECORD a macro, I don't know
anything about the language you're using, maybe I should. I'll look into
creating a Template.

By the way someone sent me an email with a website that they said would
answer my question. The website was blank.

Thanks,

Gabe
 
G

Gabe

Suzanne:
That's a good question, BUT I don't know what a template is.
I do intend to find out.
I have been using Word/97 and it was very easy to record a Macro to do what
I've been trying to do in Word/2007.
I guess my statment should have been I'm trying to RECORD a Macro.

Thanks,

Gabe
 
S

Suzanne S. Barnhill

The reason I asked is that everything you're trying to do with a macro can
be achieved much more simply in a template; see
http://word.mvps.org/FAQs/Customization/CreateATemplatePart1.htm.

When you don't choose any other template, your documents are based on
Normal.dot (or Normal.dotm in Word 2007), but you can have as many templates
as you like, and it makes sense to create a template for any specific type
of formatting you use frequently. If you use some different settings for
*all* documents, you may want to customize Normal.dot instead (see
http://word.mvps.org/FAQs/Customization/CustomizeNormalTemplate.htm), but
adding page numbers or columns to Normal.dot is not recommended.
 
S

StevenM

There is also an old-fashioned resource, one which some of us old-timers
still like to use, it is called a “book.†It might be hard for some of you
youngsters to imagine, but some of us old-timers read information on paper as
well as information on a screen. And I’m not talking about a printout, but
something more than a handful of loose pages. A “book†is actually pages of
printed paper sewn (or glued) together, with a cloth (or cardboard) cover. I
would recommend you finding a book on Microsoft Word, they will have chapters
on creating a template, or working with macros. Such books usually go into
more detail than the (otherwise wonder) tutorials you find on the Internet.
You can find books for sale (new and used) on the Internet, or you can try
locating a place which warehouses and sells them, it is called a “bookstore.â€
Just ask any old geezer where one might be, they will be able to give you
directions.
 
U

USEN

Hi Steven,

You seem to know quite a bit about Macros & VBA...perhaps you can help me as
well....

I have Office 2007, but I've designed a template and a Macro for an
employer who has people using both Word 2002 and 2003. Since it's for
someone else with a different versions of Word, I can't store it normally.
Since I don't know the file structure of their computers, I figured it would
be best to just create a folder on my C-drive so that they can store it in
the same place when I send it to them. Here's the problem.

I've designed 2 templates. The first template needs to call up the 2nd and
place the contents of the 2nd template at the top of various pages in the 1st
one. That's where the macro comes in. It inserts a page break then opens
the 2nd template, copies the contents and then pastes those contents at the
top of the new page. I purposely instructed the Macro so save in the
normal.dotm file so that it could be run from any other file when the
keyboard shortcut is used. It works like a charm from within the first
template as long as the template itself is open. However, when I attempt to
use the template as it is designed to be used...meaning that it opens a copy
of itself in a temporary document (Document1, Document2, etc.), then the
Macro fails to work. I get errors stating that part of the component set is
missing...the actual template that has opened a copy of itself instead of the
original.

I've deleted and re-recorded this Macro so many times...but the results are
always the same. What am I doing wrong? I have been trying to get this done
for over 5 hours now. Is it because the documents are not being stored in
the folders that Word normally stores them in?

Can anyone please give me some suggestions?

Thanks!
USEN
 
D

Doug Robbins - Word MVP

I responded to your identical post in the VBA General Newsgroup - admitedly
without giving a direct solution to your problem, but advising that you
would have to provide more information (the code at least) to be able to
provide assistance.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 
Top