WshShell对象实例(VBA)
WshShell对象实例(VBA)
WshSell作为WSH对象一个组成部分,主要可以实现如下功能:
1. 在本地运行程序
2. 操纵注册表内容。
3. 创建快捷方式
4. 访问系统文件夹
5. 操纵环境变量(如 WINDIR、PATH 或 PROMPT)
先来看一下WshShell都有哪些方法和属性
AppActivate |
方法 |
激活一应用程序窗口 |
CreateShortcut |
方法 |
创建并返回 WshShortcut 对象。 |
Exec |
方法 |
执行一个外部命令,返回一个对象。 |
ExpandEnvironmentStrings |
方法 |
扩展 PROCESS 环境变量并返回结果字符串。 |
LogEvent |
方法 |
写入事件查看器日志 |
Popup |
方法 |
显示包含指定消息的消息窗口。 |
RegDelete |
方法 |
从注册表中删除指定的键或值。 |
RegRead |
方法 |
从注册表中返回指定的键或值。 |
RegWrite |
方法 |
在注册表中设置指定的键或值。 |
Run |
方法 |
创建新的进程,该进程用指定的窗口样式执行指定的命令。 |
SendKeys |
方法 |
发送按键消息 |
CurrentDirectory |
属性 |
当前目录 |
Environment |
属性 |
返回 WshEnvironment 集合对象。 |
SpecialFolders |
属性 |
使用 WshSpecialFolders 对象提供对Windows shell 文件夹的访问,如桌面文件夹,开始菜单文件夹和个人文档文件夹。 |
下面,我们进入VBE来进行WshShell对象代码的实例练习。
先在工具->引用中建立对WshShell对象的引用
代码1
Sub testAppActivate()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate ("无标题 - 记事本")
End Sub
运行结果:将Windows("无标题 - 记事本")设为当前活动窗口。
代码2
Sub testCreateShortcut()
Dim WshShell As Object, oShellLink As Object, oUrlLink As Object
Set WshShell = CreateObject("WScript.Shell")
Set oShellLink = WshShell.CreateShortcut("F:\test.lnk")
oShellLink.TargetPath = ThisWorkbook.FullName
oShellLink.Save
Set oUrlLink = WshShell.CreateShortcut("F:\VSEXCEL.URL")
oUrlLink.TargetPath = "http://visardwl.blog.163.com"
oUrlLink.Save
End Sub
运行结果:在F盘根目录下建立两个超链接
test.lnk 指向 包含代码的工作簿
VSEXCEL.RUL 指向 网站http://visardwl.blog.163.com
代码3
Sub testExec()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Exec "calc"
End Sub
运行结果:打开Windows操作系统自带计算器。
代码4
Sub testPopup()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Popup "2秒后自动关闭", 2, "提示"
End Sub
运行结果:弹出消息窗,2秒种后自动关闭。
代码5
Sub testRun()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "F:\123.txt", 3
End Sub
运行结果:打开F盘根目录下名为123.txt的文本文件,并最大化显示。
Sub testRun()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "F:\fly.exe"
End Sub
运行结果:运行F盘根目录下可执行文件fly.exe
代码6
Sub testSendKeys()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}u"
End Sub
运行结果:发送按键信息,Ctrl+ESC再按U,相当于点开始,再点关闭计算机。