Как я могу отобразить переменную среды операционной системы из Excel? - PullRequest
2 голосов
/ 05 октября 2009

У меня есть приложение, написанное в Excel, плюс куча надстроек на C ++ / Python.

Расположение различных файлов конфигурации, используемых надстройками, определяется во время запуска рядом переменных среды. Я хотел бы отладить проблему, связанную с этими переменными среды, наиболее прямым способом: можно ли просто ввести формулу Excel, которая приведет к отображению переменной среды на листе?

Позвольте привести пример:

У меня есть переменная среды с именем " MYADDIN_XML_CONFIG ", которая содержит путь к файлу XML, используемому компонентом MyAddin. Если эта переменная среды установлена ​​неправильно, MyAddin не будет работать. Я хотел бы иметь одну простую функцию, которая принимает строку " MYADDIN_XML_CONFIG " в качестве аргумента и возвращает значение env-var, если оно установлено. Если переменная окружения не установлена, она должна возвращать NONE или какой-либо код ошибки.

Можно ли это сделать?

К вашему сведению, MS Excel 2003 в Windows XP.

Ответы [ 3 ]

5 голосов
/ 05 октября 2009

Я не знаю встроенной формулы Excel, которая бы это делала, но вы можете создать публичную функцию в модуле VBA:

Public Function Env(Value As Variant) As String
    Env = Environ(Value)
End Function

, затем используйте это как определяемую пользователем формулу на листе, например,

=Env("COMPUTERNAME")
1 голос
/ 05 октября 2009

Используйте функцию VBA Environ("MYADDIN_XML_CONFIG").

0 голосов
/ 03 августа 2018

К сожалению, принятое решение не будет работать, если ваша переменная среды изменит свое значение (даже если вы снова откроете книгу Excel, значение ячейки не изменится). Если вы хотите, чтобы он обновлялся чаще, вам следует обновить значение ячейки для какого-либо события,

например. Worksheet_Activate (код должен быть помещен в VBAProject-> Microsoft Excel Objects-> Sheet, который должен соблюдаться):

Private Sub Worksheet_Activate() 
    Range("a1") = Environ("SOME_ENV_VARIABLE")
End Sub

или Workbook_Open (код должен быть помещен в VBAProject-> объекты Microsoft Excel-> ThisWorkbook):

Private Sub Workbook_Open()
    Range("a1") = Environ("SOME_ENV_VARIABLE")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...