How do I set up automatically suceeding numbers in Word?

G

Guest

I have tried to set up each of three different contracts that I have set as
templates (.dot) as individually numbered documents using the names for "NRS
RemContract.dot" with the Order Macro set as below, with a new Macro named as
RemContractOrder (replacing "Order" with "RemContractOrder") and nothing
seems to work to give me a different numbering system for my three templates.
The templates are named; NRS RemContract.dot, NRS Service & Repair.dot, and
NRS Bid-proposal.dot. Please help a dumb Remodeling Contractor get this right.
 
J

Jay Freedman

Item 1: DO NOT change the name of the macro. It has to be named
AutoNew() in order to work.

Item 2: In the template named "NRS RemContract.dot", there should be
an AutoNew macro that contains the lines (each of these should be one
line, but the posting program breaks them):

Order = System.PrivateProfileString("C:\NRS RemContract
Sequence.Txt","MacroSettings","Order)

and

System.PrivateProfileString("C:\NRS RemContract
Sequence.Txt","MacroSettings","Order) = Order


In the template named "NRS Service & Repair.dot", there should also be
a macro named AutoNew, and it should contain the lines

Order = System.PrivateProfileString("C:\NRS Service & Repair
Sequence.Txt","MacroSettings","Order)

and

System.PrivateProfileString("C:\NRS Service & Repair
Sequence.Txt","MacroSettings","Order) = Order


In the template named "NRS Bid-proposal.dot", there should also be a
macro named AutoNew, and it should contain the lines

Order = System.PrivateProfileString("C:\NRS Bid-proposal
Sequence.Txt","MacroSettings","Order)

and

System.PrivateProfileString("C:\NRS Bid-proposal
Sequence.Txt","MacroSettings","Order) = Order

Item 3: (Just in case you aren't already doing this...) You have to
use the File > New command (and if you get a task pane, click the link
for "On my computer") and select the proper template as the base for a
new document. The File > New command is what causes the macro named
AutoNew to run, and that does all the sequence number stuff. If you
don't do File > New, the macro doesn't run and you don't get a
sequence number.

Are we there yet? ;-)
 
G

Guest

I followed the items you laid out and when I open the next template to modify
it the AutoNew is already set. When I make the modifications to that Macro
for the open document, it resets all the other templates to that sequential
numbering.

As per Item 3: I hadn't been doing that but even when I do I get the
sequence of numbers that is continuos no matter which template I open If I
open one template that has a number of 01005, then open a different template
that is suposed to have a number starting 03*** it will open with 01006.

Although all these are separate templates, the AutoNew seems to treat them
the same. when I attempt to set the AutoNew for a specific template and I
edit what is opened with AutoNew to reflect that template it changes all the
other templates to that Macro.
 
G

Guest

I hope that I didn't upset you with my insessent questions, but I am going
to repost this:

I am probably beginning to sound really stupid. So let me see if I have it
from the beginning.

First I open a template (.dot) which automatically creates a document (.doc)
that has a name "Document* (* = the number of the document opened and saved)
then in that document I go to File > New which opens a task pane that I then
click on the Link for "On my Computer", I then receive a new Template (.dot)
named "path0*****.dot, I then set my bookmark where I want the sequential
numbers and then Go to Tools > Macro > Macros and am given a choice in the
window that opens a blank space for Macro name, a bigger area that has
AutoExec.MAIN, AutoExit.MAIN, and RunFineReader, with active buttons
"Create", "Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens Microsoft
Visual Basic which has a panel that has a choice of "FineReader6SprintTools",
"Normal", "Project (Document 1)" (with no modules), "TemplateProject (Live
Meeting Toolbar Customizations)" and finally "TemplateProject (SerRepCon)"
[the name of the original template], both the "Project (Document 1)" and the
"TemplateProject (SerRepCon)" have "ThisDocument" when opening "Microsoft
Word Objects". Which one do I use?

The code window that opens caries the header of whichever main catagory is
highlighted. This is the window that I put the AutoNew language.

After this is done I would then click on the Save icon on the toolbar in
Microsoft Visual Basic and shut window. then I would go to File > SaveAs and
name the document the same as the name used in the Macro before "sequence".

Is this correct? Inf not Please correct within the messege.
 
J

Jay Freedman

Hi Scott,

I'm not upset; this is a complicated setup. But it does seem that you missed
some fundamental principles, and I'm glad of the chance to start at the
bottom and clear things up.

Your paragraph "First I open a template ..." is not correct. Please wipe
that blackboard clean, and we'll start from the beginning.

I'll assume you have a template named SerRepCon.dot that contains the text
of a contract. Within that text are some form fields. For each customer,
you want to make a document based on the template, in which the form fields
will be filled in differently. Some place in the document you want to put a
sequence number that will be different for each document, and that number
will also become part of the document's file name. Right so far?

I'll also assume that at this point the SerRepCon.dot template doesn't
contain any macros, and that the template file is stored in your Templates
folder (something like C:\Documents and Settings\snulton\Application
Data\Microsoft\Templates).

Start the Word program. Click File > Open (_not_ File > New at this time).
Set the "Files of type" dropdown to "Document Templates (*.dot)". Use the
"Look in" dropdown to navigate to the Templates folder, select
SerRepCon.dot, and click OK. You're now able to edit the SerRepCon.dot
template itself, not any document based on it.

Put the cursor in the location where you want the sequence number to appear,
and insert a bookmark named "Order". That same bookmark will automatically
appear in each document you base on this template.

Open the VBA editor. The Projects pane should include icons for Normal
(because Normal.dot is always loaded), FineReader6SprintTools (which is an
add-in from the FineReader program), Live Meeting Toolbar Customizations
(another add-in), and SerRepCon. If you followed the directions exactly,
there shouldn't be any others -- but if there are, ignore them.

Select and expand the icon for "TemplateProject (SerRepCon)". It should
contain a folder named "Microsoft Word Objects", in which there is a
"ThisDocument" icon. Ignore those. Click the Insert > Module command on the
menu (in the VBA editor, not in Word's window). That will create a Modules
folder under "TemplateProject (SerRepCon)", containing a "Module1" icon. To
verify that you're in the right place, the code window should be empty and
the title bar should say "Microsoft Visual Basic - SerRepCon - [Module1
(Code)]".

Click in the code window and paste in the code of the AutoNew macro from our
recent posts. Make sure it includes the lines to unprotect and reprotect the
form. The two lines that mention System.PrivateProfileString should contain
"C:\SerRepCon Sequence.txt" as the name of the file to contain the current
sequence number.

Close the VBA editor. Turn on form protection (click the lock icon on the
Forms toolbar), save the template, and close it.

Open the File > New dialog (_not_ File Open -- now you're going to create a
document based on the template). Select the SerRepCon template and click OK.
You should see a document named "path00001.doc" that is a protected form
with the sequence number 00001 at the place marked by the Order bookmark.

Each time you go to File > New and select the SerRepCon template as the
basis for a new document, you should get another document and the sequence
number should be greater by 1 than the one before.

Now repeat all the previous steps for the template of another kind of form;
the only difference should be that the lines that mention
System.PrivateProfileString should contain the name of a different text
file -- one related to that particular template.

By the way, I don't think you really want the word "path" as part of the
document's filename. The reason it's there now is that the original article
on word.mvps.org shows it there -- but it was meant to represent the folder
location (that is, the path from C:\ to the folder where you want the
document to be stored), not the literal word "path". If you just want to
store all the documents in the My Documents folder, you could change the
Save statement to something like

ActiveDocument.SaveAs FileName:="SerRepCon" & Format(Order, "0000#")

so the actual name of a document based on this template would be something
like SerRepCon00001.doc. Because the filename doesn't contain any
information about the folder, Word automatically uses whatever folder you
have set as the Documents location in the Tools > Options > File Locations
dialog -- and by default that's the My Documents folder.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
I hope that I didn't upset you with my insessent questions, but I am
going to repost this:

I am probably beginning to sound really stupid. So let me see if I
have it from the beginning.

First I open a template (.dot) which automatically creates a document
(.doc) that has a name "Document* (* = the number of the document
opened and saved) then in that document I go to File > New which
opens a task pane that I then click on the Link for "On my Computer",
I then receive a new Template (.dot) named "path0*****.dot, I then
set my bookmark where I want the sequential numbers and then Go to
Tools > Macro > Macros and am given a choice in the window that opens
a blank space for Macro name, a bigger area that has AutoExec.MAIN,
AutoExit.MAIN, and RunFineReader, with active buttons "Create",
"Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens
Microsoft Visual Basic which has a panel that has a choice of
"FineReader6SprintTools", "Normal", "Project (Document 1)" (with no
modules), "TemplateProject (Live Meeting Toolbar Customizations)" and
finally "TemplateProject (SerRepCon)" [the name of the original
template], both the "Project (Document 1)" and the "TemplateProject
(SerRepCon)" have "ThisDocument" when opening "Microsoft Word
Objects". Which one do I use?

The code window that opens caries the header of whichever main
catagory is highlighted. This is the window that I put the AutoNew
language.

After this is done I would then click on the Save icon on the toolbar
in Microsoft Visual Basic and shut window. then I would go to File >
SaveAs and name the document the same as the name used in the Macro
before "sequence".

Is this correct? Inf not Please correct within the messege.


Jay Freedman said:
See http://www.word.mvps.org/FAQs/MacrosVBA/NumberDocs.htm.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.
 
G

Guest

Thank you Jay;

I got it to work, however if the lock icon is clicked to protect the form
when that template is accessed an Error messege:
"Run-time error `4605`
This method or property is not available because the object refers to a
protected area of the document. appears. When clicking on "De-bug" The VBA
opens the AutoNew window and highlites the second to last line before "End
Sub"

But without the document "protected" the numbering works.

Thanks again

Jay Freedman said:
Hi Scott,

I'm not upset; this is a complicated setup. But it does seem that you missed
some fundamental principles, and I'm glad of the chance to start at the
bottom and clear things up.

Your paragraph "First I open a template ..." is not correct. Please wipe
that blackboard clean, and we'll start from the beginning.

I'll assume you have a template named SerRepCon.dot that contains the text
of a contract. Within that text are some form fields. For each customer,
you want to make a document based on the template, in which the form fields
will be filled in differently. Some place in the document you want to put a
sequence number that will be different for each document, and that number
will also become part of the document's file name. Right so far?

I'll also assume that at this point the SerRepCon.dot template doesn't
contain any macros, and that the template file is stored in your Templates
folder (something like C:\Documents and Settings\snulton\Application
Data\Microsoft\Templates).

Start the Word program. Click File > Open (_not_ File > New at this time).
Set the "Files of type" dropdown to "Document Templates (*.dot)". Use the
"Look in" dropdown to navigate to the Templates folder, select
SerRepCon.dot, and click OK. You're now able to edit the SerRepCon.dot
template itself, not any document based on it.

Put the cursor in the location where you want the sequence number to appear,
and insert a bookmark named "Order". That same bookmark will automatically
appear in each document you base on this template.

Open the VBA editor. The Projects pane should include icons for Normal
(because Normal.dot is always loaded), FineReader6SprintTools (which is an
add-in from the FineReader program), Live Meeting Toolbar Customizations
(another add-in), and SerRepCon. If you followed the directions exactly,
there shouldn't be any others -- but if there are, ignore them.

Select and expand the icon for "TemplateProject (SerRepCon)". It should
contain a folder named "Microsoft Word Objects", in which there is a
"ThisDocument" icon. Ignore those. Click the Insert > Module command on the
menu (in the VBA editor, not in Word's window). That will create a Modules
folder under "TemplateProject (SerRepCon)", containing a "Module1" icon. To
verify that you're in the right place, the code window should be empty and
the title bar should say "Microsoft Visual Basic - SerRepCon - [Module1
(Code)]".

Click in the code window and paste in the code of the AutoNew macro from our
recent posts. Make sure it includes the lines to unprotect and reprotect the
form. The two lines that mention System.PrivateProfileString should contain
"C:\SerRepCon Sequence.txt" as the name of the file to contain the current
sequence number.

Close the VBA editor. Turn on form protection (click the lock icon on the
Forms toolbar), save the template, and close it.

Open the File > New dialog (_not_ File Open -- now you're going to create a
document based on the template). Select the SerRepCon template and click OK.
You should see a document named "path00001.doc" that is a protected form
with the sequence number 00001 at the place marked by the Order bookmark.

Each time you go to File > New and select the SerRepCon template as the
basis for a new document, you should get another document and the sequence
number should be greater by 1 than the one before.

Now repeat all the previous steps for the template of another kind of form;
the only difference should be that the lines that mention
System.PrivateProfileString should contain the name of a different text
file -- one related to that particular template.

By the way, I don't think you really want the word "path" as part of the
document's filename. The reason it's there now is that the original article
on word.mvps.org shows it there -- but it was meant to represent the folder
location (that is, the path from C:\ to the folder where you want the
document to be stored), not the literal word "path". If you just want to
store all the documents in the My Documents folder, you could change the
Save statement to something like

ActiveDocument.SaveAs FileName:="SerRepCon" & Format(Order, "0000#")

so the actual name of a document based on this template would be something
like SerRepCon00001.doc. Because the filename doesn't contain any
information about the folder, Word automatically uses whatever folder you
have set as the Documents location in the Tools > Options > File Locations
dialog -- and by default that's the My Documents folder.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
I hope that I didn't upset you with my insessent questions, but I am
going to repost this:

I am probably beginning to sound really stupid. So let me see if I
have it from the beginning.

First I open a template (.dot) which automatically creates a document
(.doc) that has a name "Document* (* = the number of the document
opened and saved) then in that document I go to File > New which
opens a task pane that I then click on the Link for "On my Computer",
I then receive a new Template (.dot) named "path0*****.dot, I then
set my bookmark where I want the sequential numbers and then Go to
Tools > Macro > Macros and am given a choice in the window that opens
a blank space for Macro name, a bigger area that has AutoExec.MAIN,
AutoExit.MAIN, and RunFineReader, with active buttons "Create",
"Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens
Microsoft Visual Basic which has a panel that has a choice of
"FineReader6SprintTools", "Normal", "Project (Document 1)" (with no
modules), "TemplateProject (Live Meeting Toolbar Customizations)" and
finally "TemplateProject (SerRepCon)" [the name of the original
template], both the "Project (Document 1)" and the "TemplateProject
(SerRepCon)" have "ThisDocument" when opening "Microsoft Word
Objects". Which one do I use?

The code window that opens caries the header of whichever main
catagory is highlighted. This is the window that I put the AutoNew
language.

After this is done I would then click on the Save icon on the toolbar
in Microsoft Visual Basic and shut window. then I would go to File >
SaveAs and name the document the same as the name used in the Macro
before "sequence".

Is this correct? Inf not Please correct within the messege.


Jay Freedman said:
snulton wrote:
I have a template that has a space for a number. I want each
successive document opened using that template to have a new number
that is the next number in sucession, i.e. - after opening 20071001,
the next time that I access that template should open 2001002.

See http://www.word.mvps.org/FAQs/MacrosVBA/NumberDocs.htm.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.
 
J

Jay Freedman

Did you include the code to unprotect the document and the code to protect
the document? This was in my post of 10/182007:

- ... insert new code before and after the InsertBefore line
like this:

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order,
"0000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "0000#")


That will turn off the protection just long enough to insert the sequence
number, and then turn the protection on again.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
Thank you Jay;

I got it to work, however if the lock icon is clicked to protect the
form when that template is accessed an Error messege:
"Run-time error `4605`
This method or property is not available because the object refers to
a protected area of the document. appears. When clicking on "De-bug"
The VBA opens the AutoNew window and highlites the second to last
line before "End Sub"

But without the document "protected" the numbering works.

Thanks again

Jay Freedman said:
Hi Scott,

I'm not upset; this is a complicated setup. But it does seem that
you missed some fundamental principles, and I'm glad of the chance
to start at the bottom and clear things up.

Your paragraph "First I open a template ..." is not correct. Please
wipe that blackboard clean, and we'll start from the beginning.

I'll assume you have a template named SerRepCon.dot that contains
the text of a contract. Within that text are some form fields. For
each customer, you want to make a document based on the template, in
which the form fields will be filled in differently. Some place in
the document you want to put a sequence number that will be
different for each document, and that number will also become part
of the document's file name. Right so far?

I'll also assume that at this point the SerRepCon.dot template
doesn't contain any macros, and that the template file is stored in
your Templates folder (something like C:\Documents and
Settings\snulton\Application Data\Microsoft\Templates).

Start the Word program. Click File > Open (_not_ File > New at this
time). Set the "Files of type" dropdown to "Document Templates
(*.dot)". Use the "Look in" dropdown to navigate to the Templates
folder, select SerRepCon.dot, and click OK. You're now able to edit
the SerRepCon.dot template itself, not any document based on it.

Put the cursor in the location where you want the sequence number to
appear, and insert a bookmark named "Order". That same bookmark will
automatically appear in each document you base on this template.

Open the VBA editor. The Projects pane should include icons for
Normal (because Normal.dot is always loaded), FineReader6SprintTools
(which is an add-in from the FineReader program), Live Meeting
Toolbar Customizations (another add-in), and SerRepCon. If you
followed the directions exactly, there shouldn't be any others --
but if there are, ignore them.

Select and expand the icon for "TemplateProject (SerRepCon)". It
should contain a folder named "Microsoft Word Objects", in which
there is a "ThisDocument" icon. Ignore those. Click the Insert >
Module command on the menu (in the VBA editor, not in Word's
window). That will create a Modules folder under "TemplateProject
(SerRepCon)", containing a "Module1" icon. To verify that you're in
the right place, the code window should be empty and the title bar
should say "Microsoft Visual Basic - SerRepCon - [Module1 (Code)]".

Click in the code window and paste in the code of the AutoNew macro
from our recent posts. Make sure it includes the lines to unprotect
and reprotect the form. The two lines that mention
System.PrivateProfileString should contain "C:\SerRepCon
Sequence.txt" as the name of the file to contain the current
sequence number.

Close the VBA editor. Turn on form protection (click the lock icon
on the Forms toolbar), save the template, and close it.

Open the File > New dialog (_not_ File Open -- now you're going to
create a document based on the template). Select the SerRepCon
template and click OK. You should see a document named
"path00001.doc" that is a protected form with the sequence number
00001 at the place marked by the Order bookmark.

Each time you go to File > New and select the SerRepCon template as
the basis for a new document, you should get another document and
the sequence number should be greater by 1 than the one before.

Now repeat all the previous steps for the template of another kind
of form; the only difference should be that the lines that mention
System.PrivateProfileString should contain the name of a different
text file -- one related to that particular template.

By the way, I don't think you really want the word "path" as part of
the document's filename. The reason it's there now is that the
original article on word.mvps.org shows it there -- but it was meant
to represent the folder location (that is, the path from C:\ to the
folder where you want the document to be stored), not the literal
word "path". If you just want to store all the documents in the My
Documents folder, you could change the Save statement to something
like

ActiveDocument.SaveAs FileName:="SerRepCon" & Format(Order, "0000#")

so the actual name of a document based on this template would be
something like SerRepCon00001.doc. Because the filename doesn't
contain any information about the folder, Word automatically uses
whatever folder you have set as the Documents location in the Tools
Options > File Locations dialog -- and by default that's the My
Documents folder.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.
I hope that I didn't upset you with my insessent questions, but I
am going to repost this:

I am probably beginning to sound really stupid. So let me see if I
have it from the beginning.

First I open a template (.dot) which automatically creates a
document (.doc) that has a name "Document* (* = the number of the
document opened and saved) then in that document I go to File > New
which opens a task pane that I then click on the Link for "On my
Computer", I then receive a new Template (.dot) named
"path0*****.dot, I then set my bookmark where I want the sequential
numbers and then Go to Tools > Macro > Macros and am given a choice
in the window that opens a blank space for Macro name, a bigger
area that has AutoExec.MAIN, AutoExit.MAIN, and RunFineReader, with
active buttons "Create", "Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens
Microsoft Visual Basic which has a panel that has a choice of
"FineReader6SprintTools", "Normal", "Project (Document 1)" (with no
modules), "TemplateProject (Live Meeting Toolbar Customizations)"
and finally "TemplateProject (SerRepCon)" [the name of the original
template], both the "Project (Document 1)" and the "TemplateProject
(SerRepCon)" have "ThisDocument" when opening "Microsoft Word
Objects". Which one do I use?

The code window that opens caries the header of whichever main
catagory is highlighted. This is the window that I put the AutoNew
language.

After this is done I would then click on the Save icon on the
toolbar in Microsoft Visual Basic and shut window. then I would go
to File > SaveAs and name the document the same as the name used in
the Macro before "sequence".

Is this correct? Inf not Please correct within the messege.


:

snulton wrote:
I have a template that has a space for a number. I want each
successive document opened using that template to have a new
number that is the next number in sucession, i.e. - after opening
20071001, the next time that I access that template should open
2001002.

See http://www.word.mvps.org/FAQs/MacrosVBA/NumberDocs.htm.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.
 
G

Guest

OOPS!!! :-}

Jay Freedman said:
Did you include the code to unprotect the document and the code to protect
the document? This was in my post of 10/182007:

- ... insert new code before and after the InsertBefore line
like this:

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order,
"0000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "0000#")


That will turn off the protection just long enough to insert the sequence
number, and then turn the protection on again.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
Thank you Jay;

I got it to work, however if the lock icon is clicked to protect the
form when that template is accessed an Error messege:
"Run-time error `4605`
This method or property is not available because the object refers to
a protected area of the document. appears. When clicking on "De-bug"
The VBA opens the AutoNew window and highlites the second to last
line before "End Sub"

But without the document "protected" the numbering works.

Thanks again

Jay Freedman said:
Hi Scott,

I'm not upset; this is a complicated setup. But it does seem that
you missed some fundamental principles, and I'm glad of the chance
to start at the bottom and clear things up.

Your paragraph "First I open a template ..." is not correct. Please
wipe that blackboard clean, and we'll start from the beginning.

I'll assume you have a template named SerRepCon.dot that contains
the text of a contract. Within that text are some form fields. For
each customer, you want to make a document based on the template, in
which the form fields will be filled in differently. Some place in
the document you want to put a sequence number that will be
different for each document, and that number will also become part
of the document's file name. Right so far?

I'll also assume that at this point the SerRepCon.dot template
doesn't contain any macros, and that the template file is stored in
your Templates folder (something like C:\Documents and
Settings\snulton\Application Data\Microsoft\Templates).

Start the Word program. Click File > Open (_not_ File > New at this
time). Set the "Files of type" dropdown to "Document Templates
(*.dot)". Use the "Look in" dropdown to navigate to the Templates
folder, select SerRepCon.dot, and click OK. You're now able to edit
the SerRepCon.dot template itself, not any document based on it.

Put the cursor in the location where you want the sequence number to
appear, and insert a bookmark named "Order". That same bookmark will
automatically appear in each document you base on this template.

Open the VBA editor. The Projects pane should include icons for
Normal (because Normal.dot is always loaded), FineReader6SprintTools
(which is an add-in from the FineReader program), Live Meeting
Toolbar Customizations (another add-in), and SerRepCon. If you
followed the directions exactly, there shouldn't be any others --
but if there are, ignore them.

Select and expand the icon for "TemplateProject (SerRepCon)". It
should contain a folder named "Microsoft Word Objects", in which
there is a "ThisDocument" icon. Ignore those. Click the Insert >
Module command on the menu (in the VBA editor, not in Word's
window). That will create a Modules folder under "TemplateProject
(SerRepCon)", containing a "Module1" icon. To verify that you're in
the right place, the code window should be empty and the title bar
should say "Microsoft Visual Basic - SerRepCon - [Module1 (Code)]".

Click in the code window and paste in the code of the AutoNew macro
from our recent posts. Make sure it includes the lines to unprotect
and reprotect the form. The two lines that mention
System.PrivateProfileString should contain "C:\SerRepCon
Sequence.txt" as the name of the file to contain the current
sequence number.

Close the VBA editor. Turn on form protection (click the lock icon
on the Forms toolbar), save the template, and close it.

Open the File > New dialog (_not_ File Open -- now you're going to
create a document based on the template). Select the SerRepCon
template and click OK. You should see a document named
"path00001.doc" that is a protected form with the sequence number
00001 at the place marked by the Order bookmark.

Each time you go to File > New and select the SerRepCon template as
the basis for a new document, you should get another document and
the sequence number should be greater by 1 than the one before.

Now repeat all the previous steps for the template of another kind
of form; the only difference should be that the lines that mention
System.PrivateProfileString should contain the name of a different
text file -- one related to that particular template.

By the way, I don't think you really want the word "path" as part of
the document's filename. The reason it's there now is that the
original article on word.mvps.org shows it there -- but it was meant
to represent the folder location (that is, the path from C:\ to the
folder where you want the document to be stored), not the literal
word "path". If you just want to store all the documents in the My
Documents folder, you could change the Save statement to something
like

ActiveDocument.SaveAs FileName:="SerRepCon" & Format(Order, "0000#")

so the actual name of a document based on this template would be
something like SerRepCon00001.doc. Because the filename doesn't
contain any information about the folder, Word automatically uses
whatever folder you have set as the Documents location in the Tools
Options > File Locations dialog -- and by default that's the My
Documents folder.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.

snulton wrote:
I hope that I didn't upset you with my insessent questions, but I
am going to repost this:

I am probably beginning to sound really stupid. So let me see if I
have it from the beginning.

First I open a template (.dot) which automatically creates a
document (.doc) that has a name "Document* (* = the number of the
document opened and saved) then in that document I go to File > New
which opens a task pane that I then click on the Link for "On my
Computer", I then receive a new Template (.dot) named
"path0*****.dot, I then set my bookmark where I want the sequential
numbers and then Go to Tools > Macro > Macros and am given a choice
in the window that opens a blank space for Macro name, a bigger
area that has AutoExec.MAIN, AutoExit.MAIN, and RunFineReader, with
active buttons "Create", "Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens
Microsoft Visual Basic which has a panel that has a choice of
"FineReader6SprintTools", "Normal", "Project (Document 1)" (with no
modules), "TemplateProject (Live Meeting Toolbar Customizations)"
and finally "TemplateProject (SerRepCon)" [the name of the original
template], both the "Project (Document 1)" and the "TemplateProject
(SerRepCon)" have "ThisDocument" when opening "Microsoft Word
Objects". Which one do I use?

The code window that opens caries the header of whichever main
catagory is highlighted. This is the window that I put the AutoNew
language.

After this is done I would then click on the Save icon on the
toolbar in Microsoft Visual Basic and shut window. then I would go
to File > SaveAs and name the document the same as the name used in
the Macro before "sequence".

Is this correct? Inf not Please correct within the messege.


:

snulton wrote:
I have a template that has a space for a number. I want each
successive document opened using that template to have a new
number that is the next number in sucession, i.e. - after opening
20071001, the next time that I access that template should open
2001002.

See http://www.word.mvps.org/FAQs/MacrosVBA/NumberDocs.htm.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.
 
G

Guest

This is what I changed AutoNew to:

Sub AutoNew()

Order = System.PrivateProfileString("C:\NRS Bid-proposal Sequence.Txt",
"MacroSettings", "Order")

If Order = "" Then
Order = 1
Else
Order = Order + 1
End If

System.PrivateProfileString("C:\NRS Bid-proposal sequence.txt",
"MacroSettings", "Order") = Order

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order, "04000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "04000#")

End Sub

Then I lock it and save the template


When I try to access a new document from that template the VBA editor opens
with an error window that says "Compile error: Argument not optional" I then
click on OK and Sub AutoNew() is high-lited in yellow and in
ActiveDocument.Protect ".Protect is high-lited in blue

Jay Freedman said:
Did you include the code to unprotect the document and the code to protect
the document? This was in my post of 10/182007:

- ... insert new code before and after the InsertBefore line
like this:

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order,
"0000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "0000#")


That will turn off the protection just long enough to insert the sequence
number, and then turn the protection on again.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
Thank you Jay;

I got it to work, however if the lock icon is clicked to protect the
form when that template is accessed an Error messege:
"Run-time error `4605`
This method or property is not available because the object refers to
a protected area of the document. appears. When clicking on "De-bug"
The VBA opens the AutoNew window and highlites the second to last
line before "End Sub"

But without the document "protected" the numbering works.

Thanks again

Jay Freedman said:
Hi Scott,

I'm not upset; this is a complicated setup. But it does seem that
you missed some fundamental principles, and I'm glad of the chance
to start at the bottom and clear things up.

Your paragraph "First I open a template ..." is not correct. Please
wipe that blackboard clean, and we'll start from the beginning.

I'll assume you have a template named SerRepCon.dot that contains
the text of a contract. Within that text are some form fields. For
each customer, you want to make a document based on the template, in
which the form fields will be filled in differently. Some place in
the document you want to put a sequence number that will be
different for each document, and that number will also become part
of the document's file name. Right so far?

I'll also assume that at this point the SerRepCon.dot template
doesn't contain any macros, and that the template file is stored in
your Templates folder (something like C:\Documents and
Settings\snulton\Application Data\Microsoft\Templates).

Start the Word program. Click File > Open (_not_ File > New at this
time). Set the "Files of type" dropdown to "Document Templates
(*.dot)". Use the "Look in" dropdown to navigate to the Templates
folder, select SerRepCon.dot, and click OK. You're now able to edit
the SerRepCon.dot template itself, not any document based on it.

Put the cursor in the location where you want the sequence number to
appear, and insert a bookmark named "Order". That same bookmark will
automatically appear in each document you base on this template.

Open the VBA editor. The Projects pane should include icons for
Normal (because Normal.dot is always loaded), FineReader6SprintTools
(which is an add-in from the FineReader program), Live Meeting
Toolbar Customizations (another add-in), and SerRepCon. If you
followed the directions exactly, there shouldn't be any others --
but if there are, ignore them.

Select and expand the icon for "TemplateProject (SerRepCon)". It
should contain a folder named "Microsoft Word Objects", in which
there is a "ThisDocument" icon. Ignore those. Click the Insert >
Module command on the menu (in the VBA editor, not in Word's
window). That will create a Modules folder under "TemplateProject
(SerRepCon)", containing a "Module1" icon. To verify that you're in
the right place, the code window should be empty and the title bar
should say "Microsoft Visual Basic - SerRepCon - [Module1 (Code)]".

Click in the code window and paste in the code of the AutoNew macro
from our recent posts. Make sure it includes the lines to unprotect
and reprotect the form. The two lines that mention
System.PrivateProfileString should contain "C:\SerRepCon
Sequence.txt" as the name of the file to contain the current
sequence number.

Close the VBA editor. Turn on form protection (click the lock icon
on the Forms toolbar), save the template, and close it.

Open the File > New dialog (_not_ File Open -- now you're going to
create a document based on the template). Select the SerRepCon
template and click OK. You should see a document named
"path00001.doc" that is a protected form with the sequence number
00001 at the place marked by the Order bookmark.

Each time you go to File > New and select the SerRepCon template as
the basis for a new document, you should get another document and
the sequence number should be greater by 1 than the one before.

Now repeat all the previous steps for the template of another kind
of form; the only difference should be that the lines that mention
System.PrivateProfileString should contain the name of a different
text file -- one related to that particular template.

By the way, I don't think you really want the word "path" as part of
the document's filename. The reason it's there now is that the
original article on word.mvps.org shows it there -- but it was meant
to represent the folder location (that is, the path from C:\ to the
folder where you want the document to be stored), not the literal
word "path". If you just want to store all the documents in the My
Documents folder, you could change the Save statement to something
like

ActiveDocument.SaveAs FileName:="SerRepCon" & Format(Order, "0000#")

so the actual name of a document based on this template would be
something like SerRepCon00001.doc. Because the filename doesn't
contain any information about the folder, Word automatically uses
whatever folder you have set as the Documents location in the Tools
Options > File Locations dialog -- and by default that's the My
Documents folder.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.

snulton wrote:
I hope that I didn't upset you with my insessent questions, but I
am going to repost this:

I am probably beginning to sound really stupid. So let me see if I
have it from the beginning.

First I open a template (.dot) which automatically creates a
document (.doc) that has a name "Document* (* = the number of the
document opened and saved) then in that document I go to File > New
which opens a task pane that I then click on the Link for "On my
Computer", I then receive a new Template (.dot) named
"path0*****.dot, I then set my bookmark where I want the sequential
numbers and then Go to Tools > Macro > Macros and am given a choice
in the window that opens a blank space for Macro name, a bigger
area that has AutoExec.MAIN, AutoExit.MAIN, and RunFineReader, with
active buttons "Create", "Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens
Microsoft Visual Basic which has a panel that has a choice of
"FineReader6SprintTools", "Normal", "Project (Document 1)" (with no
modules), "TemplateProject (Live Meeting Toolbar Customizations)"
and finally "TemplateProject (SerRepCon)" [the name of the original
template], both the "Project (Document 1)" and the "TemplateProject
(SerRepCon)" have "ThisDocument" when opening "Microsoft Word
Objects". Which one do I use?

The code window that opens caries the header of whichever main
catagory is highlighted. This is the window that I put the AutoNew
language.

After this is done I would then click on the Save icon on the
toolbar in Microsoft Visual Basic and shut window. then I would go
to File > SaveAs and name the document the same as the name used in
the Macro before "sequence".

Is this correct? Inf not Please correct within the messege.


:

snulton wrote:
I have a template that has a space for a number. I want each
successive document opened using that template to have a new
number that is the next number in sucession, i.e. - after opening
20071001, the next time that I access that template should open
2001002.

See http://www.word.mvps.org/FAQs/MacrosVBA/NumberDocs.htm.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.
 
J

Jay Freedman

My apologies... that one is my fault. The line should be

ActiveDocument.Protect wdAllowOnlyFormFields

(There are several possible kinds of protection, so the Protect
command insists on being told which kind to use.)

This is what I changed AutoNew to:

Sub AutoNew()

Order = System.PrivateProfileString("C:\NRS Bid-proposal Sequence.Txt",
"MacroSettings", "Order")

If Order = "" Then
Order = 1
Else
Order = Order + 1
End If

System.PrivateProfileString("C:\NRS Bid-proposal sequence.txt",
"MacroSettings", "Order") = Order

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order, "04000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "04000#")

End Sub

Then I lock it and save the template


When I try to access a new document from that template the VBA editor opens
with an error window that says "Compile error: Argument not optional" I then
click on OK and Sub AutoNew() is high-lited in yellow and in
ActiveDocument.Protect ".Protect is high-lited in blue

Jay Freedman said:
Did you include the code to unprotect the document and the code to protect
the document? This was in my post of 10/182007:

- ... insert new code before and after the InsertBefore line
like this:

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order,
"0000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "0000#")


That will turn off the protection just long enough to insert the sequence
number, and then turn the protection on again.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
Thank you Jay;

I got it to work, however if the lock icon is clicked to protect the
form when that template is accessed an Error messege:
"Run-time error `4605`
This method or property is not available because the object refers to
a protected area of the document. appears. When clicking on "De-bug"
The VBA opens the AutoNew window and highlites the second to last
line before "End Sub"

But without the document "protected" the numbering works.

Thanks again

:

Hi Scott,

I'm not upset; this is a complicated setup. But it does seem that
you missed some fundamental principles, and I'm glad of the chance
to start at the bottom and clear things up.

Your paragraph "First I open a template ..." is not correct. Please
wipe that blackboard clean, and we'll start from the beginning.

I'll assume you have a template named SerRepCon.dot that contains
the text of a contract. Within that text are some form fields. For
each customer, you want to make a document based on the template, in
which the form fields will be filled in differently. Some place in
the document you want to put a sequence number that will be
different for each document, and that number will also become part
of the document's file name. Right so far?

I'll also assume that at this point the SerRepCon.dot template
doesn't contain any macros, and that the template file is stored in
your Templates folder (something like C:\Documents and
Settings\snulton\Application Data\Microsoft\Templates).

Start the Word program. Click File > Open (_not_ File > New at this
time). Set the "Files of type" dropdown to "Document Templates
(*.dot)". Use the "Look in" dropdown to navigate to the Templates
folder, select SerRepCon.dot, and click OK. You're now able to edit
the SerRepCon.dot template itself, not any document based on it.

Put the cursor in the location where you want the sequence number to
appear, and insert a bookmark named "Order". That same bookmark will
automatically appear in each document you base on this template.

Open the VBA editor. The Projects pane should include icons for
Normal (because Normal.dot is always loaded), FineReader6SprintTools
(which is an add-in from the FineReader program), Live Meeting
Toolbar Customizations (another add-in), and SerRepCon. If you
followed the directions exactly, there shouldn't be any others --
but if there are, ignore them.

Select and expand the icon for "TemplateProject (SerRepCon)". It
should contain a folder named "Microsoft Word Objects", in which
there is a "ThisDocument" icon. Ignore those. Click the Insert >
Module command on the menu (in the VBA editor, not in Word's
window). That will create a Modules folder under "TemplateProject
(SerRepCon)", containing a "Module1" icon. To verify that you're in
the right place, the code window should be empty and the title bar
should say "Microsoft Visual Basic - SerRepCon - [Module1 (Code)]".

Click in the code window and paste in the code of the AutoNew macro
from our recent posts. Make sure it includes the lines to unprotect
and reprotect the form. The two lines that mention
System.PrivateProfileString should contain "C:\SerRepCon
Sequence.txt" as the name of the file to contain the current
sequence number.

Close the VBA editor. Turn on form protection (click the lock icon
on the Forms toolbar), save the template, and close it.

Open the File > New dialog (_not_ File Open -- now you're going to
create a document based on the template). Select the SerRepCon
template and click OK. You should see a document named
"path00001.doc" that is a protected form with the sequence number
00001 at the place marked by the Order bookmark.

Each time you go to File > New and select the SerRepCon template as
the basis for a new document, you should get another document and
the sequence number should be greater by 1 than the one before.

Now repeat all the previous steps for the template of another kind
of form; the only difference should be that the lines that mention
System.PrivateProfileString should contain the name of a different
text file -- one related to that particular template.

By the way, I don't think you really want the word "path" as part of
the document's filename. The reason it's there now is that the
original article on word.mvps.org shows it there -- but it was meant
to represent the folder location (that is, the path from C:\ to the
folder where you want the document to be stored), not the literal
word "path". If you just want to store all the documents in the My
Documents folder, you could change the Save statement to something
like

ActiveDocument.SaveAs FileName:="SerRepCon" & Format(Order, "0000#")

so the actual name of a document based on this template would be
something like SerRepCon00001.doc. Because the filename doesn't
contain any information about the folder, Word automatically uses
whatever folder you have set as the Documents location in the Tools
Options > File Locations dialog -- and by default that's the My
Documents folder.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.

snulton wrote:
I hope that I didn't upset you with my insessent questions, but I
am going to repost this:

I am probably beginning to sound really stupid. So let me see if I
have it from the beginning.

First I open a template (.dot) which automatically creates a
document (.doc) that has a name "Document* (* = the number of the
document opened and saved) then in that document I go to File > New
which opens a task pane that I then click on the Link for "On my
Computer", I then receive a new Template (.dot) named
"path0*****.dot, I then set my bookmark where I want the sequential
numbers and then Go to Tools > Macro > Macros and am given a choice
in the window that opens a blank space for Macro name, a bigger
area that has AutoExec.MAIN, AutoExit.MAIN, and RunFineReader, with
active buttons "Create", "Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens
Microsoft Visual Basic which has a panel that has a choice of
"FineReader6SprintTools", "Normal", "Project (Document 1)" (with no
modules), "TemplateProject (Live Meeting Toolbar Customizations)"
and finally "TemplateProject (SerRepCon)" [the name of the original
template], both the "Project (Document 1)" and the "TemplateProject
(SerRepCon)" have "ThisDocument" when opening "Microsoft Word
Objects". Which one do I use?

The code window that opens caries the header of whichever main
catagory is highlighted. This is the window that I put the AutoNew
language.

After this is done I would then click on the Save icon on the
toolbar in Microsoft Visual Basic and shut window. then I would go
to File > SaveAs and name the document the same as the name used in
the Macro before "sequence".

Is this correct? Inf not Please correct within the messege.


:

snulton wrote:
I have a template that has a space for a number. I want each
successive document opened using that template to have a new
number that is the next number in sucession, i.e. - after opening
20071001, the next time that I access that template should open
2001002.

See http://www.word.mvps.org/FAQs/MacrosVBA/NumberDocs.htm.
 
G

Guest

Jay,
When I copy the templates (that work now,YEA :) ) to my server so other
people on the network can use them, I get a MVB window that states "The
macros in this project are disabled. Please refer to the online help or
documentation of the host application to determine how to enable macros."

This also happens when I attempt to access the templates from other stations
on the network, and when I create shortcuts to my template folder.

If I put shortcuts to my template folder in the folder on the server I can
open the templates just fine, but only off my own machine.

Is this a complicated work arround?

Jay Freedman said:
My apologies... that one is my fault. The line should be

ActiveDocument.Protect wdAllowOnlyFormFields

(There are several possible kinds of protection, so the Protect
command insists on being told which kind to use.)

This is what I changed AutoNew to:

Sub AutoNew()

Order = System.PrivateProfileString("C:\NRS Bid-proposal Sequence.Txt",
"MacroSettings", "Order")

If Order = "" Then
Order = 1
Else
Order = Order + 1
End If

System.PrivateProfileString("C:\NRS Bid-proposal sequence.txt",
"MacroSettings", "Order") = Order

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order, "04000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "04000#")

End Sub

Then I lock it and save the template


When I try to access a new document from that template the VBA editor opens
with an error window that says "Compile error: Argument not optional" I then
click on OK and Sub AutoNew() is high-lited in yellow and in
ActiveDocument.Protect ".Protect is high-lited in blue

Jay Freedman said:
Did you include the code to unprotect the document and the code to protect
the document? This was in my post of 10/182007:

- ... insert new code before and after the InsertBefore line
like this:

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order,
"0000#")

ActiveDocument.Protect

ActiveDocument.SaveAs FileName:="path" & Format(Order, "0000#")


That will turn off the protection just long enough to insert the sequence
number, and then turn the protection on again.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.

snulton wrote:
Thank you Jay;

I got it to work, however if the lock icon is clicked to protect the
form when that template is accessed an Error messege:
"Run-time error `4605`
This method or property is not available because the object refers to
a protected area of the document. appears. When clicking on "De-bug"
The VBA opens the AutoNew window and highlites the second to last
line before "End Sub"

But without the document "protected" the numbering works.

Thanks again

:

Hi Scott,

I'm not upset; this is a complicated setup. But it does seem that
you missed some fundamental principles, and I'm glad of the chance
to start at the bottom and clear things up.

Your paragraph "First I open a template ..." is not correct. Please
wipe that blackboard clean, and we'll start from the beginning.

I'll assume you have a template named SerRepCon.dot that contains
the text of a contract. Within that text are some form fields. For
each customer, you want to make a document based on the template, in
which the form fields will be filled in differently. Some place in
the document you want to put a sequence number that will be
different for each document, and that number will also become part
of the document's file name. Right so far?

I'll also assume that at this point the SerRepCon.dot template
doesn't contain any macros, and that the template file is stored in
your Templates folder (something like C:\Documents and
Settings\snulton\Application Data\Microsoft\Templates).

Start the Word program. Click File > Open (_not_ File > New at this
time). Set the "Files of type" dropdown to "Document Templates
(*.dot)". Use the "Look in" dropdown to navigate to the Templates
folder, select SerRepCon.dot, and click OK. You're now able to edit
the SerRepCon.dot template itself, not any document based on it.

Put the cursor in the location where you want the sequence number to
appear, and insert a bookmark named "Order". That same bookmark will
automatically appear in each document you base on this template.

Open the VBA editor. The Projects pane should include icons for
Normal (because Normal.dot is always loaded), FineReader6SprintTools
(which is an add-in from the FineReader program), Live Meeting
Toolbar Customizations (another add-in), and SerRepCon. If you
followed the directions exactly, there shouldn't be any others --
but if there are, ignore them.

Select and expand the icon for "TemplateProject (SerRepCon)". It
should contain a folder named "Microsoft Word Objects", in which
there is a "ThisDocument" icon. Ignore those. Click the Insert >
Module command on the menu (in the VBA editor, not in Word's
window). That will create a Modules folder under "TemplateProject
(SerRepCon)", containing a "Module1" icon. To verify that you're in
the right place, the code window should be empty and the title bar
should say "Microsoft Visual Basic - SerRepCon - [Module1 (Code)]".

Click in the code window and paste in the code of the AutoNew macro
from our recent posts. Make sure it includes the lines to unprotect
and reprotect the form. The two lines that mention
System.PrivateProfileString should contain "C:\SerRepCon
Sequence.txt" as the name of the file to contain the current
sequence number.

Close the VBA editor. Turn on form protection (click the lock icon
on the Forms toolbar), save the template, and close it.

Open the File > New dialog (_not_ File Open -- now you're going to
create a document based on the template). Select the SerRepCon
template and click OK. You should see a document named
"path00001.doc" that is a protected form with the sequence number
00001 at the place marked by the Order bookmark.

Each time you go to File > New and select the SerRepCon template as
the basis for a new document, you should get another document and
the sequence number should be greater by 1 than the one before.

Now repeat all the previous steps for the template of another kind
of form; the only difference should be that the lines that mention
System.PrivateProfileString should contain the name of a different
text file -- one related to that particular template.

By the way, I don't think you really want the word "path" as part of
the document's filename. The reason it's there now is that the
original article on word.mvps.org shows it there -- but it was meant
to represent the folder location (that is, the path from C:\ to the
folder where you want the document to be stored), not the literal
word "path". If you just want to store all the documents in the My
Documents folder, you could change the Save statement to something
like

ActiveDocument.SaveAs FileName:="SerRepCon" & Format(Order, "0000#")

so the actual name of a document based on this template would be
something like SerRepCon00001.doc. Because the filename doesn't
contain any information about the folder, Word automatically uses
whatever folder you have set as the Documents location in the Tools
Options > File Locations dialog -- and by default that's the My
Documents folder.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the
newsgroup so all may benefit.

snulton wrote:
I hope that I didn't upset you with my insessent questions, but I
am going to repost this:

I am probably beginning to sound really stupid. So let me see if I
have it from the beginning.

First I open a template (.dot) which automatically creates a
document (.doc) that has a name "Document* (* = the number of the
document opened and saved) then in that document I go to File > New
which opens a task pane that I then click on the Link for "On my
Computer", I then receive a new Template (.dot) named
"path0*****.dot, I then set my bookmark where I want the sequential
numbers and then Go to Tools > Macro > Macros and am given a choice
in the window that opens a blank space for Macro name, a bigger
area that has AutoExec.MAIN, AutoExit.MAIN, and RunFineReader, with
active buttons "Create", "Organizer", and "Close".

Logic tells me that I would then "Create" AutoNew. This then opens
Microsoft Visual Basic which has a panel that has a choice of
"FineReader6SprintTools", "Normal", "Project (Document 1)" (with no
modules), "TemplateProject (Live Meeting Toolbar Customizations)"
and finally "TemplateProject (SerRepCon)" [the name of the original
template], both the "Project (Document 1)" and the "TemplateProject
(SerRepCon)" have "ThisDocument" when opening "Microsoft Word
Objects". Which one do I use?

The code window that opens caries the header of whichever main
catagory is highlighted. This is the window that I put the AutoNew
language.

After this is done I would then click on the Save icon on the
toolbar in Microsoft Visual Basic and shut window. then I would go
to File > SaveAs and name the document the same as the name used in
the Macro before "sequence".

Is this correct? Inf not Please correct within the messege.


:

snulton wrote:
I have a template that has a space for a number. I want each
successive document opened using that template to have a new
number that is the next number in sucession, i.e. - after opening
20071001, the next time that I access that template should open
2001002.

See http://www.word.mvps.org/FAQs/MacrosVBA/NumberDocs.htm.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so all may benefit.
 
J

Jay Freedman

I don't know quite what you can do -- I don't have access to a server to try
fiddling with it.

The message is the standard one you get when Word finds macros either in any
document (*.doc) or in a template from an "untrusted" location while the
macro security level is set to High. For Word 2003 and earlier, only the
local Templates and Startup folders are trusted; Word 2007 allows
(theoretically, anyway) choosing other locations to be trusted.

Go to Tools > Macro > Security and see what level is set -- each computer
will have its own setting, and there's no way to change them from outside.
If they're set to High, try changing them to Medium, which should give you a
choice of disabling or enabling the macros (of course, since you know this
isn't a virus, you should choose Enable). The Low setting is not
recommended.

Another thing that might work -- no promises -- is to go to Tools > Options
File Locations and set the Workgroup location to point to the folder on
the server. It's worth a try.

The only thing I know that's guaranteed to work is digitally signing the
macros with a security certificate. Unless you have a corporate security
server that can issue certificates, though, it'll cost several hundred
dollars to get one from Verisign or Thawte.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
 
G

Guest

Jay Freedman said:
I don't know quite what you can do -- I don't have access to a server to try
fiddling with it.

The message is the standard one you get when Word finds macros either in any
document (*.doc) or in a template from an "untrusted" location while the
macro security level is set to High. For Word 2003 and earlier, only the
local Templates and Startup folders are trusted; Word 2007 allows
(theoretically, anyway) choosing other locations to be trusted.

Go to Tools > Macro > Security and see what level is set -- each computer
will have its own setting, and there's no way to change them from outside.
If they're set to High, try changing them to Medium, which should give you a
choice of disabling or enabling the macros (of course, since you know this
isn't a virus, you should choose Enable). The Low setting is not
recommended.

Another thing that might work -- no promises -- is to go to Tools > Options
the server. It's worth a try.

The only thing I know that's guaranteed to work is digitally signing the
macros with a security certificate. Unless you have a corporate security
server that can issue certificates, though, it'll cost several hundred
dollars to get one from Verisign or Thawte.

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
 
G

Guest

I was able to gain access to the templates by changing the level to medium.
This brought up another small challenge; the numbers are only sequential per
machine, i.e. if I am on one machine the number that opens might be 030028
but opening from a machine that has not accessed that template before will
get 030001. Is this something that can be made to work so that each time the
template is opened from any terminal the number will be truly sequential or
arer we limited to using only one machine to write all contracts?
 
J

Jay Freedman

The reason the numbers are per-machine is that the macro is reading data
from, and writing data to, a local file on whatever machine the macro is
currently running on. Change the macro (in the two lines that mention
System.PrivateProfileString) to read and write a file in a shared folder,
and you should get everybody working with the same sequence -- although
there's a gotcha.

Working with previous examples from this thread, you should replace

Order = System.PrivateProfileString("C:\NRS RemContract
Sequence.Txt","MacroSettings","Order)

and

System.PrivateProfileString("C:\NRS RemContract
Sequence.Txt","MacroSettings","Order) = Order

with the lines

Order = System.PrivateProfileString("\\servername\foldername\NRS
RemContract Sequence.Txt","MacroSettings","Order)

and

System.PrivateProfileString("\\servername\foldername\NRS RemContract
Sequence.Txt","MacroSettings","Order) = Order

Of course, I mean that "servername" should be replaced with the actual name
of the server, and "foldername" should be replaced with the name of the
shared folder. (If everybody has the same drive letter permanently mapped to
the shared folder, you can use that instead of the servername\foldername
form; but that's harder to maintain.)

The gotcha is that there's no good way to make sure there are no
collisions -- that a macro for user A might try to read or write the file at
the same moment that user B's macro has the file open, which would cause an
error message. It should be very rare, though, because each access to the
file is very fast.
 
G

Guest

OK, I changed the AutoNew to read like this:

Sub AutoNew()

Order = System.PrivateProfileString("\\Server\data\Templates\NRS
RemContract Sequence.Txt","MacroSettings","Order)

If Order = "" Then
Order = 1
Else
Order = Order + 1
End If

System.PrivateProfileString("\\Server\data\Templates\NRS RemContract
Sequence.Txt","MacroSettings","Order) = Order

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order, "04000#")

ActiveDocument.Protect wdAllowOnlyFormFields

ActiveDocument.SaveAs FileName:="path" & Format(Order, "04000#")

End Sub


And so on for NRS Bid-proposal, and NRS Service-Repair Contract,

I get Compile error:
Syntax error (with the very first line highlited);
and
Compile error:
Expected:List seperator or )

What hav I done wrong now? The pathway is a cut and paste from accessing the
templates from any of the computers.
 
J

Jay Freedman

What's wrong is something simple but very easy to overlook: In each of the
PrivateProfileString expressions, you're missing a double-quote character
between Order and the closing parenthesis -- that is, you have

"MacroSettings","Order)

instead of

"MacroSettings","Order")

That applies _only_ to the occurrence immediately before the closing
parenthesis, not to the other one in the line.

By the way, I was able to get a temporary share on a server and tried this,
and it does work when you get the syntax correct. :)
 
G

Guest

OK! I have it set up like this:

Sub AutoNew()

Order = System.PrivateProfileString("\\Server\data\Templates\NRS
RemContract Sequence.Txt","MacroSettings","Orderâ€

If Order = "" Then
Order = 1
Else
Order = Order + 1
End If

System.PrivateProfileString("\\Server\data\Templates\NRS RemContract
Sequence.Txt","MacroSettings","Order†= Order

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

ActiveDocument.Bookmarks("Order").Range.InsertBefore Format(Order, "04000#")

ActiveDocument.Protect wdAllowOnlyFormFields

ActiveDocument.SaveAs FileName:="path" & Format(Order, "04000#")

End Sub


and I still get a different set of numbers from different computers. I have
been working on my own terminal so now the numbers on NRS RemContract when
opened on my computer will have (now) 030032. when opened on my designers
computer I will get 030002, not 030033
 
G

Guest

IT WORKS!!!! :) I had to restart the computers to make sure it was holding.

THANK YOU, Scott
 
J

Jay Freedman

Hallelujah! And you're welcome.

You should get some kind of award. I've been involved in longer email
threads, but I think this is my record for newsgroup threads.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top