我有一堆由环境变量配置的Excel插件。通常,这些是在系统范围内在注册表中设置的。当我想非动态地更改值时,我会转到:
my-computer -> properties -> advanced -> environment variables -> System variables
我已经确认,当我在这里设置一个环境变量时,它似乎完全按照我们的预期被Excel拾取。
但是,我还需要动态设置环境变量,例如使我的Excel插件使用备用配置文件。我希望能够做到这样的事情:
set MYADDIN_CONFIG_FILE=path_to_config.xml
<path to excel>\excel.exe
不幸的是,当我这样做时,就好像完全忽略了对环境变量的更改。我猜想Excel需要以某种方式告知已经从命令行设置的环境变量?
我已经验证上述技术无法使用VB“Env”功能。
仅供参考:Windows XP 32位上的Excel 2003。
答案 0 :(得分:3)
我做了一个简单的测试(Windows XP Pro SP3上的Excel 2003 SP2)。
我写了一个VBA函数:
Public Function GetEnv(name As String) As String
GetEnv = Environ(name)
End Function
然后我打字:
=GetEnv("TEMP")
=GetEnv("JAVA_HOME")
=GetEnv("TestSO")
后者未定义,单元格仍为空。
现在,我转到命令行并输入:
set TestSO=This is a test for SO
"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"
我加载了上一张。呃,结果没有改变,即使在点击F9之后,但如果我点击公式并点击返回,结果会更新...(我在Excel / VBA使用方面有点生疏......)
无论如何,它确实显示在运行Excel之前在当前控制台中动态设置的正确环境变量。正如所料(常见的Windows行为)。