Тема: Как использовать в скрипте переменные окружения?

Ситуация банальная донельзя... Однако бьемся день и все безрезультатно  :(

Создаем отчет в Экселевский файл. По хорошему, чтобы не загрязнять корневую директорию хочу, чтобы шаблон отчета находился в папке: C:\Documents and Settings\Имя_Пользователя\Application Data\Microsoft\Шаблоны.
Естессно, имея переменную %USERPROFILE% хочу ей воспользоваться.

Отчет создается из команды класса "Общая".
С такой конструкцией:

' Запускаем приложение MSExcel
Set ex = CreateObject("Excel.Application")

' Открывает шаблон
ex.workbooks.Open("D:\Ot4et_MZ.xlt")
...

Как описать в скрипте, что файл шаблона лежит не по адресу "D:\Ot4et_MZ.xlt",
а по пути "C:\Documents and Settings\Имя_Пользователя\Application Data\Microsoft\Шаблоны\Ot4et_MZ.xlt"

Re: Как использовать в скрипте переменные окружения?

Не понял. А что мешает вписать путь?
Что-нить типа:

Set ex = CreateObject("Excel.Application")
ex.workbooks.Open("C:\Documents and Settings\funikov\Application Data\Microsoft\Шаблоны\123.xls")
ex.visible=true

Или я что-то не понимаю?

(изменено: Mishaf, 19 июня 2007г. 10:56:33)

Re: Как использовать в скрипте переменные окружения?

Не понял. А что мешает вписать путь?

Да нет, ты не правильно понял... Речь идет о доступе к системным переменным Windows. Одна из них - путь к личной папке пользователя OC (Мои документы и т.п.).

Если речь идет только о пути к файлу-шаблону отчета, то есть другой вариант решения.
Файл "Ot4et_MZ.xlt" помещаете в шаблоны типа файла TDMS. При вызове команды формирования отчета просто выгружаете файл в определенную папку (к примеру C:\TEMP\TDMS). Преимущества такого решения в том, что файл шаблона при этом будет один у всех пользователей системы и вам не придется менять его у всех пользователей при, например, добавлении еще одного поля.

Re: Как использовать в скрипте переменные окружения?

Mishaf пишет:

Файл "Ot4et_MZ.xlt" помещаете в шаблоны типа файла TDMS. При вызове команды формирования отчета просто выгружаете файл в определенную папку (к примеру C:\TEMP\TDMS). Преимущества такого решения в том, что файл шаблона при этом будет один у всех пользователей системы и вам не придется менять его у всех пользователей при, например, добавлении еще одного поля.

Сделали. Поместили. Вариант великолепный! Только как подключить такой шаблон к Экселю?
Где указать Экселю, что он должен открывать именно этот шаблон, прицепленный к типу файла *.XLT ?
Вариант такой:

' Запускаем приложение MSExcel
Set ex = CreateObject("Excel.Application")

' Открывает шаблон
ex.workbooks.Open("Ot4et_MZ.xlt")

Не проходит...

Re: Как использовать в скрипте переменные окружения?

Ну что-то типа такого должно быть:

With ThisApplication.FileDefs("FILE_TYPE_EXCEL").Templates("Report.xls")
    Dim currentName
    currentName = TempDir & Left (.FileName, Len (.FileName) - 4) & " от " & CurrTime & ".xls"
    .CheckOut currentName
    ExcelApp.WorkBooks.Open currentName
End With

Re: Как использовать в скрипте переменные окружения?

В реальности получилось так:

With ThisApplication.FileDefs("FILE00185635").Templates("Ot4et_MZ.xlt")
    Dim currentName
    currentName =  .WorkFileName
    .CheckOut currentName
    ex.workbooks.Open currentName
End With

Как ни странно -- заработало. Для оживляжа добавили Прогрессбар -- стало совсем красиво.

Спасибо за помощь.

(изменено: Mishaf, 19 июня 2007г. 15:43:44)

Re: Как использовать в скрипте переменные окружения?

Всегда пожалуйста.
Только вот еще 1 маленькая рекомендация:
SysID системных элементов (типы объектов, атрибутов, файлов, статусов) изменять на более осмысленные значения.
К примеру гораздо проче отличить FILE_TYPE_EXCEL от FILE_TYPE_WORD, чем FILE00185635 от FILE00185636.
На работе пользователей это ни коем образом не отразится, однако Вам самим будет проще разобраться в собственных скриптах  ;). Особенно через год-два. )))))))

Да, но делать это надо предельно внимательно, т.к. придется менять SysID и во всех скриптах.  ;)

Re: Как использовать в скрипте переменные окружения?

Ответ на первоначальный вопрос о значении переменных окружения:

set WshShell = CreateObject("WScript.Shell")
msgbox WshShell.ExpandEnvironmentStrings("%USERPROFILE%")