I am in word 2007 and need to modify a global word template to look to a user's appdata\roaming\microsoft\templates folder for company specific templates.
I have the following code defining the path
Public Const strForms As String = "c:\users\%username%\appdata\roaming\microsoft\Tem plates\companyforms\"
I've tried to use Environ$("Appdata") & "\...companyfirms\"
%appdata% & "\...companyfirms\"

I just can't figure out how to define the variable for appdata regardless of the user name. The company has an outside tech firm managing their network and insists that I can't point to c:\prog files\msoffice\office12\templates.... so that is not an option.

Am I missing something? {Wouldn't be the first time} Why are you trying to point to the user's C: drive for company specific templates? They should be on a server in a single place, e.g. one copy for all, and Word should be installed to point the "Workgroup Templates" to that location.

RG: Putting the company templates on a consistent location on each user's C: drive can be a valid way to go, as well. One benefit of doing it that way is that users will continually have access to the company templates, whether they are currently working on or off the network.

But either way, the template path should be consistent for all users.

techtrain: Besides the complication of having to return an environmental variable in order to determine the correct template path, I think putting the templates into a user-specific location means that the documents will lose their connection to their originating templates, when they are passed among users.

Do you observe this problem at your company? - that is, if User A creates a new document and then User B goes to work in it, does User B lose access to things like macros or Ribbon customizations, that are associated with the originating template?
(based on your code sample, it looks like you have no code in the timesheet template, but instead are keeping code in a global template, so maybe the issue is moot...)

The code for all templates lives in a company global template that is in the startup. There are a few reasons I can't point the workgroup templates to a network path
1) Users move with their laptops and there are network connectivity issues (don't ask about that!) so I want them to have local access to the templates at all times
2) I can't put them in C:\prog file\ms off\office 12\templates because users don't have admin right on their machines so I can't script it to place the company templates to that folder without visiting all 100 users
3) i can't edit workgroup templates on the fly if they are pulled from network. Presently, the templates are on a network share k:OfficeTemplates. If I need to modify a template and a user has it attached to an open document, I can't access it right away.

Soooo, I have a login script that copies all office templates to the local machine. Additionally, it copies a good copy of the officemaster.dotm to the startup.

I thought that using Environ$("APPDATA") & "\roaming\microsoft\Templates\OfficeTemplates"
would work....but it doesn't!

Look at the graphic again. Environ$("APPDATA") return value includes the \Roaming. Your code then appends a string starting with \Roaming so you wind up with C:\Users\[USERID]\AppData\Roaming\roaming\microsoft\Templates\Offic eTemplates.