我有一堆由环境变量配置的 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。
最佳答案
我做了一个简单的测试(Excel 2003 SP2 on Windows XP Pro SP3)。
我写了一个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 之后,但如果我点击公式并按下 Return,结果会更新......(我对 Excel/VBA 的使用有点生疏......)
无论如何,它确实在运行 Excel 之前在当前控制台中即时显示正确的环境变量设置。正如预期的那样(常见的 Windows 行为)。
关于windows - 在运行 Excel 之前动态设置环境变量的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519898/