I have a some autotexts stored in a template which is currently saved in
c:\word startup\firm.dot. Some of the currently language is:
If frmreplacepi.txtattyinitials = "agq" Then
Set MyTemplate = Templates("c:\word startup\firm.dot")
MyTemplate.AutoTextEntries("/agqpi").Insert _
Where:=Selection.Range, RichText:=True

I need to change the location of the firm.dot to C:\Documents and
Settings\USERNAME\Application Data\Microsoft\Word\startup, and then adjust
the language to read:
If frmreplacepi.txtattyinitials = "agq" Then
Set MyTemplate = Templates("C:\Documents and
Settings\USERNAME\Application Data\Microsoft\Word\startup\firm.dot")
MyTemplate.AutoTextEntries("/agqpi").Insert _
Where:=Selection.Range, RichText:=True

What do I use instead of "username" in this path so the macro works on every
pc, WITHOUT having to add the name of each person to this path? I've tried
%username%, etc, but no luck so far.

THANKS SO MUCH!

Kurt

Re: SetMyTemplate problem by Shauna

Shauna
Fri Jan 18 18:48:34 PST 2008

Hi Kurt

Let's back up a few steps here.

I assume that you want to deploy firm.dot as an add-in to all your
users. And you want its AutoTexts to be available all the time to all
users. If that's the case, then put firm.dot into each user's Word
Startup folder. The Word Startup folder is whatever is displayed at
Tools > Templates and Add-ins > Startup.

When Word starts, it will load any .dot file it finds in the Word
Startup folder as an add-in.

In most organizations, you'll want to standardize the location of that
folder. By default, it is at C:\Documents and
Settings\<username>\Application Data\Microsoft\Word\STARTUP. The only
good reasons I've ever found to change from the default is if you want
to use roaming profiles and/or provide external access to the corporate
system (eg using Citrix Presentation Server or Terminal Server).

But once Word starts, it doesn't matter where the file is located. What
matters is whether the file concerned is loaded.

If your file is loaded, then you can just use
Templates("firm.dot").AutoTextEntries("MyAutoText").Insert ... etc

This works because the Templates collection consists of (a) the
templates to which all currently-open documents are attached and (b) any
.dot files loaded as an add-in (ie as a so-called global template).

Of course you'll need some error checking around that because (a) the
file might not exist or (b) the file might not be loaded or (c) the file
might not contain an AutoText named "MyAutoText".


Hope this helps. If you need more details, let us know.

Shauna Kelly. Microsoft MVP.
http://www.shaunakelly.com/word





"kurt" <kurt@discussions.microsoft.com> wrote in message
news:B553E76E-E051-46F4-A2AA-20DE65BB0425@microsoft.com...
>I have a some autotexts stored in a template which is currently saved
>in
> c:\word startup\firm.dot. Some of the currently language is:
> If frmreplacepi.txtattyinitials = "agq" Then
> Set MyTemplate = Templates("c:\word startup\firm.dot")
> MyTemplate.AutoTextEntries("/agqpi").Insert _
> Where:=Selection.Range, RichText:=True
>
> I need to change the location of the firm.dot to C:\Documents and
> Settings\USERNAME\Application Data\Microsoft\Word\startup, and then
> adjust
> the language to read:
> If frmreplacepi.txtattyinitials = "agq" Then
> Set MyTemplate = Templates("C:\Documents and
> Settings\USERNAME\Application Data\Microsoft\Word\startup\firm.dot")
> MyTemplate.AutoTextEntries("/agqpi").Insert _
> Where:=Selection.Range, RichText:=True
>
> What do I use instead of "username" in this path so the macro works on
> every
> pc, WITHOUT having to add the name of each person to this path? I've
> tried
> %username%, etc, but no luck so far.
>
> THANKS SO MUCH!
>
> Kurt



Re: SetMyTemplate problem by kurt

kurt
Mon Jan 21 10:22:01 PST 2008

Hi Shauna,

Thanks for the reply. I tried what you suggested and I still get the
message, "The requested member of the collection does not exist." I have
loaded the firm.dot in the correct default word startup directory, and Word
is pointing to this directory in the locations under tools/options.

My syntax now reads what you suggested:
If frmreplacepi.txtattyinitials = "agq" Then
Templates("firm.dot").AutoTextEntries("/agqpi").Insert _
Where:=Selection.Range, RichText:=True

I also tried this:
If frmreplacepi.txtattyinitials = "agq" Then
Set MyTemplate = Templates("firm.dot")
MyTemplate.AutoTextEntries("/agqpi").Insert _
Where:=Selection.Range, RichText:=True

That doesn't work either.

Any help? THANKS SO VERY MUCH!!

Kurt




"Shauna Kelly" wrote:

> Hi Kurt
>
> Let's back up a few steps here.
>
> I assume that you want to deploy firm.dot as an add-in to all your
> users. And you want its AutoTexts to be available all the time to all
> users. If that's the case, then put firm.dot into each user's Word
> Startup folder. The Word Startup folder is whatever is displayed at
> Tools > Templates and Add-ins > Startup.
>
> When Word starts, it will load any .dot file it finds in the Word
> Startup folder as an add-in.
>
> In most organizations, you'll want to standardize the location of that
> folder. By default, it is at C:\Documents and
> Settings\<username>\Application Data\Microsoft\Word\STARTUP. The only
> good reasons I've ever found to change from the default is if you want
> to use roaming profiles and/or provide external access to the corporate
> system (eg using Citrix Presentation Server or Terminal Server).
>
> But once Word starts, it doesn't matter where the file is located. What
> matters is whether the file concerned is loaded.
>
> If your file is loaded, then you can just use
> Templates("firm.dot").AutoTextEntries("MyAutoText").Insert ... etc
>
> This works because the Templates collection consists of (a) the
> templates to which all currently-open documents are attached and (b) any
> ..dot files loaded as an add-in (ie as a so-called global template).
>
> Of course you'll need some error checking around that because (a) the
> file might not exist or (b) the file might not be loaded or (c) the file
> might not contain an AutoText named "MyAutoText".
>
>
> Hope this helps. If you need more details, let us know.
>
> Shauna Kelly. Microsoft MVP.
> http://www.shaunakelly.com/word
>
>
>
>
>
> "kurt" <kurt@discussions.microsoft.com> wrote in message
> news:B553E76E-E051-46F4-A2AA-20DE65BB0425@microsoft.com...
> >I have a some autotexts stored in a template which is currently saved
> >in
> > c:\word startup\firm.dot. Some of the currently language is:
> > If frmreplacepi.txtattyinitials = "agq" Then
> > Set MyTemplate = Templates("c:\word startup\firm.dot")
> > MyTemplate.AutoTextEntries("/agqpi").Insert _
> > Where:=Selection.Range, RichText:=True
> >
> > I need to change the location of the firm.dot to C:\Documents and
> > Settings\USERNAME\Application Data\Microsoft\Word\startup, and then
> > adjust
> > the language to read:
> > If frmreplacepi.txtattyinitials = "agq" Then
> > Set MyTemplate = Templates("C:\Documents and
> > Settings\USERNAME\Application Data\Microsoft\Word\startup\firm.dot")
> > MyTemplate.AutoTextEntries("/agqpi").Insert _
> > Where:=Selection.Range, RichText:=True
> >
> > What do I use instead of "username" in this path so the macro works on
> > every
> > pc, WITHOUT having to add the name of each person to this path? I've
> > tried
> > %username%, etc, but no luck so far.
> >
> > THANKS SO MUCH!
> >
> > Kurt
>
>
>

Re: SetMyTemplate problem by Shauna

Shauna
Mon Jan 21 19:43:40 PST 2008

Hi Kurt

What you have is a debugging problem. That is, you have to work out
where, exactly, the problem is occurring. Or in other words, you need to
be able to interpret the error message and find out which member of what
collection does not exist. You can largely achieve this by (1) clicking
on the first line of your code and pressing F9, which will put a break
point there, then (2) running the code and (3) when you get to that
break point, press F8 to go through the code line by line. When the
error message appears, you'll know which line you were on, and can thus
make some reasonable guesses as to the problem.

You might also consider writing code that is fireproof. Something like
this:


Sub Test1()

Dim atInitials As Word.AutoTextEntry
Dim sInitials As String
Dim tplFirm As Word.Template


If Not frmreplacepi Is Nothing Then

'Get the initials from the form
On Error Resume Next
sInitials = frmreplacepi.txtattyinitials
On Error GoTo 0

If sInitials = "agq" Then

'Get a reference to the template
On Error Resume Next
Set tplFirm = Templates("firm.dot")
On Error GoTo 0

If Not tplFirm Is Nothing Then

'Get a reference to the AutoText
On Error Resume Next
Set atInitials = tplFirm.AutoTextEntries("/agqpi")
On Error GoTo 0

If Not atInitials Is Nothing Then
'Insert the AutoText
atInitials.Insert Where:=Selection.Range,
RichText:=True
Else
MsgBox "There is no AutoText named '/agqpi' in
firm.dot"
End If
Else
MsgBox "Word can't find a template named firm.dot"
End If

Else
MsgBox "Initials do not equal agq"
End If

Else
MsgBox "frmreplacepi does not exist, so there is not much we can
do today"
End If


End Sub

I'm not suggesting that good code should end up with very deeply-nested
If / Else / Endif statements. But good code does need error checking.

Hope this helps.

Shauna Kelly. Microsoft MVP.
http://www.shaunakelly.com/word




"kurt" <kurt@discussions.microsoft.com> wrote in message
news:7F0C9155-1775-4A0D-B657-A542F3EDA324@microsoft.com...
> Hi Shauna,
>
> Thanks for the reply. I tried what you suggested and I still get the
> message, "The requested member of the collection does not exist." I
> have
> loaded the firm.dot in the correct default word startup directory, and
> Word
> is pointing to this directory in the locations under tools/options.
>
> My syntax now reads what you suggested:
> If frmreplacepi.txtattyinitials = "agq" Then
> Templates("firm.dot").AutoTextEntries("/agqpi").Insert _
> Where:=Selection.Range, RichText:=True
>
> I also tried this:
> If frmreplacepi.txtattyinitials = "agq" Then
> Set MyTemplate = Templates("firm.dot")
> MyTemplate.AutoTextEntries("/agqpi").Insert _
> Where:=Selection.Range, RichText:=True
>
> That doesn't work either.
>
> Any help? THANKS SO VERY MUCH!!
>
> Kurt
>
>
>
>
> "Shauna Kelly" wrote:
>
>> Hi Kurt
>>
>> Let's back up a few steps here.
>>
>> I assume that you want to deploy firm.dot as an add-in to all your
>> users. And you want its AutoTexts to be available all the time to all
>> users. If that's the case, then put firm.dot into each user's Word
>> Startup folder. The Word Startup folder is whatever is displayed at
>> Tools > Templates and Add-ins > Startup.
>>
>> When Word starts, it will load any .dot file it finds in the Word
>> Startup folder as an add-in.
>>
>> In most organizations, you'll want to standardize the location of
>> that
>> folder. By default, it is at C:\Documents and
>> Settings\<username>\Application Data\Microsoft\Word\STARTUP. The only
>> good reasons I've ever found to change from the default is if you
>> want
>> to use roaming profiles and/or provide external access to the
>> corporate
>> system (eg using Citrix Presentation Server or Terminal Server).
>>
>> But once Word starts, it doesn't matter where the file is located.
>> What
>> matters is whether the file concerned is loaded.
>>
>> If your file is loaded, then you can just use
>> Templates("firm.dot").AutoTextEntries("MyAutoText").Insert ...
>> etc
>>
>> This works because the Templates collection consists of (a) the
>> templates to which all currently-open documents are attached and (b)
>> any
>> ..dot files loaded as an add-in (ie as a so-called global template).
>>
>> Of course you'll need some error checking around that because (a) the
>> file might not exist or (b) the file might not be loaded or (c) the
>> file
>> might not contain an AutoText named "MyAutoText".
>>
>>
>> Hope this helps. If you need more details, let us know.
>>
>> Shauna Kelly. Microsoft MVP.
>> http://www.shaunakelly.com/word
>>
>>
>>
>>
>>
>> "kurt" <kurt@discussions.microsoft.com> wrote in message
>> news:B553E76E-E051-46F4-A2AA-20DE65BB0425@microsoft.com...
>> >I have a some autotexts stored in a template which is currently
>> >saved
>> >in
>> > c:\word startup\firm.dot. Some of the currently language is:
>> > If frmreplacepi.txtattyinitials = "agq" Then
>> > Set MyTemplate = Templates("c:\word startup\firm.dot")
>> > MyTemplate.AutoTextEntries("/agqpi").Insert _
>> > Where:=Selection.Range, RichText:=True
>> >
>> > I need to change the location of the firm.dot to C:\Documents and
>> > Settings\USERNAME\Application Data\Microsoft\Word\startup, and then
>> > adjust
>> > the language to read:
>> > If frmreplacepi.txtattyinitials = "agq" Then
>> > Set MyTemplate = Templates("C:\Documents and
>> > Settings\USERNAME\Application
>> > Data\Microsoft\Word\startup\firm.dot")
>> > MyTemplate.AutoTextEntries("/agqpi").Insert _
>> > Where:=Selection.Range, RichText:=True
>> >
>> > What do I use instead of "username" in this path so the macro works
>> > on
>> > every
>> > pc, WITHOUT having to add the name of each person to this path?
>> > I've
>> > tried
>> > %username%, etc, but no luck so far.
>> >
>> > THANKS SO MUCH!
>> >
>> > Kurt
>>
>>
>>