Board logo

標題: Environ() 無法取得即時的環境變數? [打印本頁]

作者: stillfish00    時間: 2015-4-14 15:13     標題: Environ() 無法取得即時的環境變數?

通常我都用Environ函數取得系統環境變數的值(像是取得其他應用軟體的安裝路徑等)
環境變數可由:控制台>系統及安全性>系統>進階系統設定>進階>環境變數裡面看到

但是最近發現如果Excel在開啟時,從控制台去修改了環境變數後,再用Environ取得的該變數值不會跟著改變....
除非Excel重開再試才會更新該環境變數(但我不希望使用者每次執行巨集前都要先關閉Excel...)
是否有取得當下環境變數的方法?

實際例子如下:
1. 系統環境變數有一變數 CDSROOT , 變數值為 C:\Cadence\SPB_16.5(某應用軟體的安裝路徑)
2. 執行我的VBA增益集 , Environ("CDSROOT") 可以取得 C:\Cadence\SPB_16.5
3. 使用者可能切換應用軟體版本 , 將 CDSROOT 的變數值改為 C:\Cadence\SPB_16.6
4. 執行我的VBA增益集 , Environ("CDSROOT") 卻還是取得 C:\Cadence\SPB_16.5 (而不是16.6)
作者: stillfish00    時間: 2015-4-14 19:53

回復 1# stillfish00
花了許多時間
找到替代方式:
  1. Dim wshShell As Object
  2. Set wshShell = CreateObject("WScript.Shell")
  3. MsgBox wshShell.Environment.Item("要找的環境變數名稱")
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)