Batch file 从批处理调用VBS时出现运行时错误
批次代码(选项1) 我通常使用它从批处理中简单地调用vbs,不包含任何变量Batch file 从批处理调用VBS时出现运行时错误,batch-file,vbscript,runtime-error,Batch File,Vbscript,Runtime Error,批次代码(选项1) 我通常使用它从批处理中简单地调用vbs,不包含任何变量 @echo off myVBSpath=\\UNC\path set vbsFileName=myVBS.vbs cscript "%myVBSpath%\%vbsFileName%" pause 批次代码(选项2) 我通常在将变量从批处理传递到VBS时使用此选项。。。在vbs文件路径和名称后包含变量名和值 @echo off set myVBSpath=\\UNC\path set vbsFileName=myVBS
@echo off
myVBSpath=\\UNC\path
set vbsFileName=myVBS.vbs
cscript "%myVBSpath%\%vbsFileName%"
pause
批次代码(选项2)
我通常在将变量从批处理传递到VBS时使用此选项。。。在vbs文件路径和名称后包含变量名和值
@echo off
set myVBSpath=\\UNC\path
set vbsFileName=myVBS.vbs
cscript //NoLogo "%myVBSpath%\%vbsFileName%" /attachment: "%myAttachment%"
pause
产生的批处理错误消息
Dim xlApp
Dim xlBook
'Dim attachmentFullName
'attachmentFullName = WScript.Arguments.Named("attachment")
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\\UNCpath\myExcelFile.xlsm", 0, True)
xlApp.DisplayAlerts = False
xlApp.Run "myMacro" ', Cstr(attachmentFullName)
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
无论我在上面使用哪个选项,我都会收到以下错误消息:
\\UNC\path\myVBS.vbs(11,1)Microsoft VBScript运行时错误:参数
非选择性
VBS代码
Dim xlApp
Dim xlBook
'Dim attachmentFullName
'attachmentFullName = WScript.Arguments.Named("attachment")
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\\UNCpath\myExcelFile.xlsm", 0, True)
xlApp.DisplayAlerts = False
xlApp.Run "myMacro" ', Cstr(attachmentFullName)
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
故障排除
我不需要将变量传递给vbs,所以批处理代码(选项1)应该是一种方法,我就是这样开始的。当我收到上面的运行时错误消息时,我尝试使用选项2传递一个false变量,以查看是否提供了cscript命令正在查找的额外参数。不幸的是,选项2给出了相同的错误消息
这是一个相当直截了当的批处理脚本,所以我真的很茫然,感觉可能我只是盯着它看了太久,使它比需要的更难,我只是错过了一些简单的东西
你们谁能给我一双新的眼睛,让我知道是什么导致了我的运行时错误
谢谢大家! 我的解决方案可能是一次性的,但下面是在批处理脚本中注意到此错误的人员的故障排除步骤的快速总结:
是否在批处理文件
myAttachment
中设置为变量??我看不出来???@Hackoo-很抱歉,这只是一个快速的测试解决方案,但是的,我只是做了设置myAttachment=1
,这样它就有一个参数变量要传递给vbs(并调整了我的vbs以接受一个参数)。你能编辑你的问题并发布vbscript文件的源代码吗?我觉得这个错误看起来像是在运行myMacro。代码是什么?请把它贴上去。看起来它需要一个参数,所以这一行的语法不正确。赢家,赢家,鸡肉晚餐--@DavyC得到一颗金星。我已经在VBA子系统中注释掉了变量的用法。。。但在sub中,我仍然要求从VBS中获得一个覆盖变量<代码>子myMacro(t作为字符串)——刚刚删除了(t作为字符串)
,并且已备份并运行。