Доступ к системным переменным

Программирование на Visual Basic for Applications
AlexVLad
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.01.2008 (Чт) 21:31

Доступ к системным переменным

Сообщение AlexVLad » 02.10.2008 (Чт) 20:06

Можно-ли в VBA получить доступ к системным переменным окружения типа Path,Temp,Windir и т.п.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Доступ к системным переменным

Сообщение tyomitch » 02.10.2008 (Чт) 21:43

Environ
Изображение

Goettsch
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 21.08.2007 (Вт) 1:44

Re: Доступ к системным переменным

Сообщение Goettsch » 02.10.2008 (Чт) 21:58

Способ 1

Код: Выделить всё
Sub GET_SYS_VARIABLES()

    Const SYS_VAR_PATH$ = "Path"
    Const SYS_VAR_WINDIR$ = "windir"
    Const SYS_VAR_TEMP$ = "TEMP"
   
    MsgBox Environ(SYS_VAR_PATH)
    MsgBox Environ(SYS_VAR_WINDIR)
    MsgBox Environ(SYS_VAR_TEMP)

End Sub

Способ 2

Код: Выделить всё
Sub GET_SYS_VARIABLES()

    ' ВНИМАНИЕ! чтобы использовать этот способ поставьте привязку
    ' к "Windows Script Host Object Model" (т.е. галку напротив
    ' чекбокса в окне, вызываемом через меню Tools / References)

    Dim MyShell As WshShell
    Dim MyEnv As WshEnvironment ' Env - аббрев. от Environment
   
    Const VARIABLE_TYPE_PROCESS$ = "Process"

    Const SYS_VAR_PATH$ = "Path"
    Const SYS_VAR_WINDIR$ = "windir"
    Const SYS_VAR_TEMP$ = "TEMP"
   
    Set MyShell = CreateObject("WScript.Shell")
    Set MyEnv = MyShell.Environment(VARIABLE_TYPE_PROCESS)
   
    MsgBox MyEnv.Item(SYS_VAR_PATH)
    MsgBox MyEnv.Item(SYS_VAR_WINDIR)
    MsgBox MyEnv.Item(SYS_VAR_TEMP)
   
    Set MyEnv = Nothing
    Set MyShell = Nothing

End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Доступ к системным переменным

Сообщение alibek » 03.10.2008 (Пт) 8:06

Goettsch, есть ли хоть одна причина использовать второй способ?
Если уж хочешь показать, что знаешь не только про Environ, то покажи с использованием WinAPI или FSO.
Lasciate ogni speranza, voi ch'entrate.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Доступ к системным переменным

Сообщение Sebas » 03.10.2008 (Пт) 8:31

alibek писал(а):Goettsch, есть ли хоть одна причина использовать второй способ?
Если уж хочешь показать, что знаешь не только про Environ, то покажи с использованием WinAPI или FSO.


Например, копипаст из VB6 и обратно.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Goettsch
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 21.08.2007 (Вт) 1:44

Re: Доступ к системным переменным

Сообщение Goettsch » 03.10.2008 (Пт) 16:50

есть ли хоть одна причина использовать второй способ?

Второй пример пришел мне в голову просто потому, что это способ из VBS для WinScriptHost, но его можно применить и в VBA, а так как в моем представлении VBS и VBA своего рода "близнецы-братья" (говорим Ленин — подразумеваем — Партия, говорим Партия — подразумеваем Ленин, вот так :)), то вот я его и вспомнил...

Если уж хочешь показать, что знаешь не только про Environ, то покажи с использованием WinAPI или FSO.

При чем тут FSO не совсем ясно, хотя с его помощью, конечно, тоже кое-что можно узнать:

Код: Выделить всё
Dim FileSysObj As FileSystemObject
Set FileSysObj = CreateObject("Scripting.FileSystemObject")
  MsgBox FileSysObj.GetSpecialFolder(SystemFolder)
  MsgBox FileSysObj.GetSpecialFolder(WindowsFolder)
  MsgBox FileSysObj.GetSpecialFolder(TemporaryFolder)
Set FileSysObj = Nothing

Ну а насчет WinAPI я так скажу: этому Си-подобному заумному дерьму вообще не место в VBA. Как говорится: Богу — Богово, а кесарю — кесарево, на WinAPI пусть системщики ваяют, а нам, сирым автоматизаторам MS-Office оно некошерно будет.
[Viper] :: Ты уверен, что подобные эпитеты стоит применять к WinAPI?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Доступ к системным переменным

Сообщение tyomitch » 03.10.2008 (Пт) 19:18

Goettsch писал(а):а так как в моем представлении VBS и VBA своего рода "близнецы-братья"

Весьма ошибочное представление.

VBA как язык идентичен "автономному" VB6, а VBS как язык от них существенно отличается.
Изображение


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 112

    TopList