Shell开启程序与关闭
上一篇 /
下一篇 2006-10-20 22:01:05 / 天气: 晴朗
/ 心情: 高兴
/ 个人分类:Office与VBA
今天学到了一招,如何使用DOS命令来操作运行程序!呵呵,感觉很爽,在Shell上又发掘了一块宝库!
以下是我的一个实例:
我载了个可以在VBE环境中滚动鼠标的程序,不过它要运行才可以让VBE对鼠标感应,然后我就写了个加载宏,加载宏的代码就是下面这些,呵呵!
h8@i\cS0
}kV(l0}.LhV;|"a0开启Excel的时候就可以启动这个程序,然后哦关闭Excel时候又可以自动关闭这个小程序。感觉真好!
Dim pid As Long精英博客Wc B'ne(b
^q:j3L:Dw|7k2F0Private Sub Workbook_BeforeClose(Cancel As Boolean) '工作簿关闭的时候以隐藏窗体模式执行一个DOS命令,关闭那个开启的程序精英博客&?\Re2W"NG
On Error GoTo Err_Handle '关于taskkill,可以在控制台输入taskkill /?查看它的参数(/pid 设置要关闭的程序的ID)
1? X*ee!h-M0 Shell "cmd.exe /c taskkill /pid " & pid, vbHide精英博客 PFt3i6Z6uU9N
Err_Handle:
/i5H'y
pa
Zp;JM0End Sub
Mx0_nt3R.W#rX1r0
HDW.Kh)_0Private Sub Workbook_Open()
g.}tq O.S6db g%G0Dim strTemp As String
mg4a:ZCYh0精英博客R.N.CC(s
If Len(Sheet1.Range("A1")) Then '检查sheet1的A1单元格是否有内容精英博客C1C6UE8v
If (Dir(Sheet1.Range("A1")) = "VBScroll.exe") Then '按照A1指定路径查看有没有VBScroll.exe程序
|
`.I}e7v npT0 pid = Shell(Sheet1.Range("A1")) '如果找到,执行它精英博客rFe7m-hG
Else
Y-\x R#I2@
\,X@0 GoTo Check_Handle '否则弹出询问对话
OT+@/V N-c$g+dU6b0 End If精英博客eBXLA"`1y
Else
QU"c
y1NO4R;G*j0Check_Handle:
Y{M[cup%]&xr0 If MsgBox("未找到VBScroll.exe!是否查找?", vbOKCancel) = vbOK Then '提示是否手动查找该程序精英博客
a*z8E.WJQy
LEb
strTemp = Application.GetSaveAsFilename(InitialFileName:="vbscroll.exe", filefilter:="EXE File(*.exe),*.exe", buttontext:="开启") '获取路径
's(j
z#n
lc0 If strTemp = "False" Then '如果未作选择,退出过程
Fe.^2C1}X6M0 Exit Sub
Q-G lJd[L6}0 Else
+d*t9w
\0pD9@u!|:F0 Sheet1.Range("A1") = strTemp '将结果保存在A1,然后打开改程序精英博客E
I};NY
ThisWorkbook.Save
*t'V{5c9p0 pid = Shell(Sheet1.Range("A1"))
;x(^,a OKM&B0 End If精英博客F-Z-m ~6wX)q
End If精英博客W
g2u"_F1Z
End If精英博客jl p/{&H
End Sub
由此我想到了,可不可以使用类似的方法运行C++书写的控制台程序,然后捕获它的返回或者由此运行VBScript脚本,捕获它的返回值。
这个问题正在研究中.......
导入论坛
引用链接
收藏
分享给好友
管理
举报
TAG:
Office与VBA
VB技术难点