bat调用vbs问题

shanyuhuang shanyuhuang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现在的程序调用关系是:
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文件)是一种最为简单快速的方法

weixin_38731239

登录使用vbs文件调用bat格式的其他模块儿

简单的登录界面,使用vbs文件调用bat格式形式,来调用其他模块儿。使用sprintboot技术。

Tina-Kong

vbs与bat混编修改虚拟盘符的卷标

如何用VBS或BAT修改磁盘卷标,希望用VBS建立一个新SSS磁盘卷标,5秒后,再删除SSS磁盘卷标,有需要的小伙伴可以参考下

weixin_38688745

VBS脚本和BAT批处理删除自身的方法

有时候我们再写一些脚本的时候,需要删除文件自身,一来保密二来删除不需要的文件。

weixin_38601878

VBS+BAT无限弹窗教程[可运行源码]

本文介绍了一种使用VBS和BAT脚本实现随机位置无限弹窗的恶搞方法。首先通过VBS脚本生成随机位置的弹窗,利用inputbox函数设置x、y轴参数实现弹窗位置的随机性。接着通过另一个VBS脚本调用BAT文件,隐藏运行界面以避免弹窗被终止。BAT文件则通过简单的死循环指令goto实现无限弹窗的效果。文章详细说明了代码的编写方法,并提供了具体的操作步骤,包括文件创建、命名和存放位置。最后还给出了将脚本设置为开机自启动的方法,使得每次开机都能自动触发无限弹窗。需要注意的是,这种方法可能会影响他人正常使用电脑,建议谨慎操作。

u0v1w2x3
评论 1
收藏 已收藏
分享
返回顶部
shanyuhuang
VB基础类 7,788 成员 197,583 内容