bat调用vbs问题
现在的程序调用关系是:
bat->main vbs->vba
客户需要对vba作时间限制,超过一定时间VBA不结束就强制终止继续执行main vbs的后续代码
因为想不到具体控制时间的方法,所以另外写了个sub vbs(killExcel.vbs),
在main vbs中用shell来杀excel进程的方法终止VBA
所以现在的结构是:
bat->main vbs->sub vbs & vba
现在的问题是,直接从main vbs启动时,该方法有效
从bat启动时,该方法无效,请教各位这是为什么呢?有什么办法能解决这个问题?
求大侠赐教!!拜托了
main vbs结构:
killExcel.vbs结构
bat->main vbs->vba
客户需要对vba作时间限制,超过一定时间VBA不结束就强制终止继续执行main vbs的后续代码
因为想不到具体控制时间的方法,所以另外写了个sub vbs(killExcel.vbs),
在main vbs中用shell来杀excel进程的方法终止VBA
所以现在的结构是:
bat->main vbs->sub vbs & vba
现在的问题是,直接从main vbs启动时,该方法有效
从bat启动时,该方法无效,请教各位这是为什么呢?有什么办法能解决这个问题?
求大侠赐教!!拜托了
main vbs结构:
Set wbs = createobject("WScript.Shell")
wbs.Run "cscript killExcel.vbs ",0,false 'killExcel.vbs就是我写的sub vbs
Set xlsApp = createobject("excel.application")
With xlsApp
.DisplayAlerts = False
.EnableEvents = False ' 禁止宏自启动(事件停止).Interactive = False
.workbooks.open "c:\a.xlsm"
.Visible = False
On Error Resume Next
.run "a.xlsm!test" '执行vba
.EnableEvents = True
On Error Resume Next
.workbooks.Close
.DisplayAlerts = True
End With
Set xlsApp = Nothing
killExcel.vbs结构
timeLimitInMins = 1
wscript.sleep timeLimitInMins*60*1000
Call Close_Process()
Sub Close_Process()
On Error Resume Next
For Each Process In GetObject("winmgmts:").ExecQuery("select * from Win32_Process where name='EXCEL.EXE'")
Process.Terminate (0)
Next
End Sub
...全文
相关推荐
自动以管理员身份运行批处理bat文件(vbs与bat两种方法)
在日常运维工作中,为方便对windows用户进行系统安装或配置等,使用Windows自带的批处理(bat文件)是一种最为简单快速的方法
登录使用vbs文件调用bat格式的其他模块儿
简单的登录界面,使用vbs文件调用bat格式形式,来调用其他模块儿。使用sprintboot技术。
vbs与bat混编修改虚拟盘符的卷标
如何用VBS或BAT修改磁盘卷标,希望用VBS建立一个新SSS磁盘卷标,5秒后,再删除SSS磁盘卷标,有需要的小伙伴可以参考下
VBS脚本和BAT批处理删除自身的方法
有时候我们再写一些脚本的时候,需要删除文件自身,一来保密二来删除不需要的文件。
VBS+BAT无限弹窗教程[可运行源码]
本文介绍了一种使用VBS和BAT脚本实现随机位置无限弹窗的恶搞方法。首先通过VBS脚本生成随机位置的弹窗,利用inputbox函数设置x、y轴参数实现弹窗位置的随机性。接着通过另一个VBS脚本调用BAT文件,隐藏运行界面以避免弹窗被终止。BAT文件则通过简单的死循环指令goto实现无限弹窗的效果。文章详细说明了代码的编写方法,并提供了具体的操作步骤,包括文件创建、命名和存放位置。最后还给出了将脚本设置为开机自启动的方法,使得每次开机都能自动触发无限弹窗。需要注意的是,这种方法可能会影响他人正常使用电脑,建议谨慎操作。


VB基础类
