![Office VBA开发经典:中级进阶卷](https://wfqqreader-1252317822.image.myqcloud.com/cover/711/26542711/b_26542711.jpg)
2.9 使用WshNetwork对象
IWshRuntimeLibrary下面的WshNetwork对象可以操作局域网多台计算机的对象,其重要属性如下。
ComputerName:返回计算机名称。
UserName:返回用户名。
重要方法如下。
MapNetworkDrive:映射网络驱动器。
RemoveNetworkDrive:移除指定的网络驱动器。
与打印机有关的成员如下。
EnumPrinterConnections:枚举所有打印机。
SetDefaultPrinter:设置默认打印机。
2.9.1 返回计算机属性
下面的程序返回当前计算机的名称和用户名。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/868.jpg?sign=1738810615-OpsLtglZB4eq1QMrZHQb4wU4ZxBqvF3K-0-4ba5496cddbba1731b3f89400044f376)
运行上述程序,立即窗口的打印结果如图2-49所示。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/871.jpg?sign=1738810615-6ejbWGYbAyFPOVYQuxa9E263CA64y2VQ-0-d3cdd7c4b4462dacfd7b043e3b22bef7)
图2-49 查看计算机名和用户名
2.9.2 映射网络驱动器
映射网络驱动器功能可以把网络中的其他计算机或服务器中的磁盘、路径映射为当前计算机中的一个分区。WshNetWork下面的MapNetworkDrive方法可以实现这一功能,其参数如下。
LocalName:本地驱动器名称。
RemoteName:远程服务器或计算机中的路径,一般以\\加上计算机名称或IP地址开头。
UpdateProfi le:是否保存映射信息到本地计算机中,默认值为False。
UserName:远程服务器或计算机的用户名。
Password:远程服务器或计算机的密码。
假设有一台远程计算机的名称为ryueifu_VBA,有如下路径:
D:\TEXTBOOK\Python
运行如下程序就可以把该路径映射为本地计算机的Z分区。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/872.jpg?sign=1738810615-Vto3mJxodSzFQgquZaeK4gXebIDlgV2P-0-a8c86896e893e7ef3e0c2f5687e2d6d3)
运行上述程序,本地计算机的资源管理器中多出了Z分区,如图2-50所示。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/869.jpg?sign=1738810615-Q0KmZYFQZqCW8NY8WUy2nwDagz2Ld9GD-0-e81f21ab52b93af75ea9a34bbaca131b)
图2-50 自动映射网络驱动器
与之相反,使用RemoveNetworkDrive可以移除指定的映射分区。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/870.jpg?sign=1738810615-OiogJn2G1WnRBl4NasUKxlHKJm6AdEmL-0-4a17d8bbf48fcfd0749866e5b0bdac28)
运行上述程序,Z分区自动消失。
2.9.3 操作打印机
WshNetwork对象有很多用于操作打印机的成员,例如EnumPrinterConnections可以用于枚举计算机中所有的打印机端口和名称。
下面的程序枚举当前计算机上所有的打印机名称。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/875.jpg?sign=1738810615-q6SSxmTVnLGsgLvMmN1uONXMgAAxSAtU-0-ae972ec32042de3911f243932114b162)
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/874.jpg?sign=1738810615-1lIR1Z8D5fQ7vxwcbGTIqtCCfzMgnk0R-0-531ca43e8ccec00cc76e62bed58e6655)
图2-51 遍历所有打印机
代码分析:如果把Debug.Print Printers(i)中的i改成i—1,则打印出来的是每个打印机的端口名称。
运行上述程序,立即窗口打印出所有打印机名称,如图2-51所示。
SetDefaultPrinter方法则可以设置默认打印机。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/876.jpg?sign=1738810615-yOn4N0OmVnxXBZKWKfx5JLj8CmCD1ESP-0-722161003d727113ca8c498c7edb4d80)
运行以上程序,更改默认打印机,然后打印出默认打印机的名称,如图2-52所示。
![](https://epubservercos.yuewen.com/F986E7/15056702504171006/epubprivate/OEBPS/Images/873.jpg?sign=1738810615-OSCuHUgClzBy5KYcDCBXm3v1D1oZtjWF-0-f3f7f7ef8bca35e4d82312677b16bbbb)
图2-52 自动设置默认打印机
以上内容的源代码文件为“实例文档09.xlsm”。