vbscript调用Excel Workbooks.Open不等待/工作

时间:2016-08-06 17:14:39

标签: vba excel-vba vbscript excel

我已经编写了excel vba多年了,vbscript没那么多,不确定为什么这个vbscript在调用应用程序对象的RUN方法的vbscript行上出现“未知的运行时错误”,我很确定我是正确地使用语法。只有一个工作簿在应用程序对象下打开,我可能甚至不需要在工作簿名称前加上它!但无论如何我还有 在视觉上,对我来说似乎正在发生的是前一行(将 wb 变量设置为应用程序对象的 Workbooks.Open 方法,根本不打开。它也不是错误的,它也不会“最终”打开。所以我很不确定到底发生了什么?路径是正确的,文件名是正确的,我的vbscript中没有On Error Resume Next,怎么能工作簿没有打开而不是错误??

我希望我认为这是一个“等待/暂停”问题的可能性是错误的。直接作用于excel对象模型,似乎等待直到excelapp对象打开工作簿的vbscript代码应该是给定的权利?这有什么不对?

dim excelapp, wb
set excelapp = createobject("excel.application")
excelapp.enableevents=true
excelapp.visible=true
set wb = excelapp.workbooks.open("C:\Users\John\Desktop\Scheduled Jobs from Isaac\Availability.xlsb")
'MSGBOX "SHOULD BE OPEN"
excelapp.windowstate = -4137    'value for constant xlMaximized acccording to msdn
excelapp.caption = "Running AVAILABILITY - Please WAIT..."
excelapp.run "Availability.xlsb!ChangeAndCopyFile"

...最后,这可能是一个愚蠢的问题,但有人请告诉我如何将代码放入S.O.,而不是手动下载每一行代码并按空格键4次?肯定有更好的方法?????????

2 个答案:

答案 0 :(得分:0)

我使用的最终vbscript代码,无论好坏:

dim excelapp, wb
'set excelapp = createobject("excel.application")
'excelapp.enableevents=true
'excelapp.visible=true
'set wb = excelapp.workbooks.open("C:\Users\John\Desktop\ScheduledJobsfromIsaac\Availability.xlsb")
'although I don't know why the above line is silently failing, i'm going to use an alternate method I read on S.O.:
set wb = GetObject("C:\Users\John\Desktop\ScheduledJobsfromIsaac\Availability.xlsb")
set excelapp = getobject(,"excel.application")
excelapp.enableevents=true
excelapp.visible=true
excelapp.windowstate = -4137    'value for constant xlMaximized acccording to msdn
excelapp.caption = "Running AVAILABILITY - Please WAIT..."
excelapp.run "Availability.xlsb!ChangeAndCopyFile"
wb.close(true)
excelapp.caption = "10 seconds to close - please WAIT..."
wscript.sleep 10000
excelapp.displayalerts=false
excelapp.quit

答案 1 :(得分:0)

可能,如果您可以描述上面执行vbscript的位置和方式,这会有所帮助吗?这是用.vbs文件编码并使用wscript.exe或cscript.exe执行,还是嵌入HTML或HTA?

如果这是用HTML编写的,您使用什么浏览器查看?请注意,几乎所有现代浏览器都会默默地忽略vbscript。