windows - 在运行 Excel 之前动态设置环境变量的正确方法是什么?

标签 windows excel ms-office

我有一堆由环境变量配置的 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/

相关文章:

Windows 8 语音转文本和文本转语音 API

node.js - 将 Node.js 应用程序分发为单个跨平台可执行文件

java - socket.getInetAddress().getHostAddress() 奇怪的问题

vba - 安全 - 如何确保更多安全

c# - 使用 Outlook VSTO 在控制窗体中添加 "Email" View

c# - 在 WPF 中更改一个/事件窗口的系统语言

r - 如何在 R 中导出 Excel 文件?

excel - 如果包含特定值,则将值从一列复制到另一列

.net - 在 .Net 和 C# 中导入 doc 和 docx 文件

ms-office - JavaScript API不适用于Excel 2013吗?