![Office VBA开发经典:中级进阶卷](https://wfqqreader-1252317822.image.myqcloud.com/cover/711/26542711/b_26542711.jpg)
2.5 操作环境变量
环境变量(Environment Variables)一般是指指定操作系统运行环境的一些参数,如临时文件夹位置和系统文件夹位置等。
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。例如之前讲过的Shell函数中,可执行文件的路径可以不写前面的所在路径,只写文件名称即可。这是因为这些文件的所在路径已经保存在环境变量中。
本节讲述如何用WshShell操作环境变量。
对于Windows 7系统,查看环境变量的方法是,进入控制面板,单击“系统和安全”→“系统”→“高级系统设置”,然后在“系统属性”对话框中切换到“高级”选项卡,接着单击“环境变量”按钮,如图2-39所示。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/847.jpg?sign=1738885228-FpleQIeCIHFvTQD9oMTKbPCUOZ9fvNMY-0-1e0292c7238e28cca106c23fa5505ebb)
图2-39 设置环境变量
然后弹出“环境变量”对话框,如图2-40所示。
对话框分为上下两部分,上面部分是用户变量(User),下面是系统变量(System),很多应用程序都把重要的路径保存在系统变量的Path变量中。
以系统变量为例,对话框中看到的OS,就是一个环境变量的变量名称,而后面的Windows_NT是一个字符串,它表示变量的值。在逻辑上,与程序语言中的字典(键值对)非常相似。
通过环境变量对话框可以进行增加、删除、修改变量等操作。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/848.jpg?sign=1738885228-MOkW8yQtyhfXHIutJxa53k3qXh9dgas1-0-37556f0ad41fbcd4d6d1626b57f83ac6)
图2-40 “环境变量”对话框
WshShell对象下面有一个Environment成员,该成员会返回一个环境变量集合WshEnvironment对象,通过访问该对象,可以实现环境变量的查看、修改和增删。
2.5.1 查看和遍历环境变量
下面的过程遍历系统环境变量(System)的所有变量。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/851.jpg?sign=1738885228-uosDroZTIpLaFcND8xHC6Vzr2GdUFrrs-0-c547b9b071e6c9b771059d07586bcb67)
代码分析:针对遍历到的每一个变量,v得到的是一个字符串,对于每一个字符串,以=为分界线,等号左侧是变量名,右侧是变量值,如图2-41所示。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/849.jpg?sign=1738885228-0UMekY9A1a6LK6XabOvtpdcIY8dEJGwV-0-bcc44fa6f563d6a1dfb02080c63026b5)
图2-41 遍历系统环境变量
如果要单独显示变量名和字符串,用Split函数处理一下即可。也就是把打印语句改为如下形式。
Debug.Print Split(v, "=")(0), Split(v, "=")(1)
如果要查看其中某个环境变量的值,可以用Item获取。
运行下面的过程,获取CCHZPATH这个环境变量的取值。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/850.jpg?sign=1738885228-NMbR4hGnmu4rJzU5Sj6G0GbYJXmy7rCo-0-651c6e608d421808407b2da2daaf4f4a)
运行上述过程,对话框中给出环境变量的值,如图2-42所示。
如果要遍历用户环境变量,只需要把上述过程中的WS.Environment("System")替换成WS.Environment("User")即可。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/853.jpg?sign=1738885228-YuqkUc8W9Ax1jgOQns553BSmt2AA38wI-0-9603e1d3758e75a7e5f2734278e75eb5)
图2-42 获取环境变量的值
2.5.2 新建和修改环境变量
无论是新建一个环境变量,还是修改已有变量的取值,语法都是一样的。
下面的过程更改CCHZPATH环境变量的路径。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/855.jpg?sign=1738885228-ndCexknLDYCNWhUG2aLU5Cm2zNC28eSZ-0-12618bd7c4cb7fc514ca9a4d446134a9)
运行上述过程,然后在环境变量对话框中核对,如图2-43所示。
再例如SysVariables.Item("Perfect") = "C:\temp"可以直接创建一个名称为Perfect的新环境变量,并且赋值。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/854.jpg?sign=1738885228-MFXNd6gxYlId2kOMorh7Lale9XTTFsSn-0-ec3605190e1e4ad14a61ff8765d68fb9)
图2-43 自动修改环境变量的值
2.5.3 删除环境变量
使用环境变量对象的Remove方法,可以删除指定名称的环境变量。例如SysVariables.Remove "CCHZPATH"把名为"CCHZPATH"的环境变量删除。
如果要删除所有环境变量,循环调用Remove方法即可。下面的代码删除User下的所有环境变量。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/852.jpg?sign=1738885228-QfZbZ5Xdm1ur3IsGB8WRVTlTnKyTNAFQ-0-92b6033a2785df97b47f0e914066b599)
代码分析:如果在循环过程中对集合中的元素进行增删,这样的操作比较危险。因此,首先把目前所有的环境变量的名称保存到一个Collection对象或者动态数组中。
然后循环Collection中的每一个字符串,再移除环境变量,如图2-44所示。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/857.jpg?sign=1738885228-CqE0EbCpqwP8nkptfAyowMHaeCWoiGvn-0-57be3161eae0cf5aa258c997de67f3db)
图2-44 批量删除所有环境变量