我是 VBS 编码的新手,我一直在 VBScript 中收到 1024 预期语句错误。如果有人能指出我哪里有错误,我将不胜感激。
Dim Path
Dim BeginDate
Dim EndDate
Path = WScript.Arguments.Item(0)
BeginDate = WScript.Arguments.Item(1)
EndDate = WScript.Arguments.Item(2)
Set objExcel = CreateObject("Excel.Application")
Set objWorkBook = objExcel.Workbooks.Open(Path)
objExcel.Visible = True
Worksheets("PO Buy Update").Range("H3").AutoFilter Field:=8, Criteria1:="<>"
Worksheets("PO Buy Update").Range("Q3").AutoFilter Field:=17, Criteria1:="<>"
Worksheets("PO Buy Update").Range("P3").AutoFilter Field:=16, Criteria1:=">=" & BeginDate, Operator:=xlAnd, Criteria2:="<=" & EndDate
直到过滤部分一切正常。当我尝试在Excel中将过滤部分作为宏运行时,它可以工作,但是当我将其实现到脚本中时,它会给我一个错误。
在 VBScript 中,调用函数/方法时不必提及参数的名称。您只需要传递值。参数名称在 excel-vba 中是必需的,而不是在 VBScript 中。
所以,尝试重播,
Worksheets("PO Buy Update").Range("H3").AutoFilter Field:=8, Criteria1:="<>"
Worksheets("PO Buy Update").Range("Q3").AutoFilter Field:=17, Criteria1:="<>"
Worksheets("PO Buy Update").Range("P3").AutoFilter Field:=16, Criteria1:=">=" & BeginDate, Operator:=xlAnd, Criteria2:="<=" & EndDate
跟
Worksheets("PO Buy Update").Range("H3").AutoFilter 8,"<>"
Worksheets("PO Buy Update").Range("Q3").AutoFilter 17,"<>"
Worksheets("PO Buy Update").Range("P3").AutoFilter 16,">=" & BeginDate,1,"<=" & EndDate
对自动筛选方法的引用
对枚举常量xlAnd
的引用
VBScript 无法处理命名参数。将最后一行更改为
Worksheets("PO Buy Update").Range("H3").AutoFilter 8, "<>"
Worksheets("PO Buy Update").Range("Q3").AutoFilter 17, "<>"
Worksheets("PO Buy Update").Range("P3").AutoFilter 16, ">=" & BeginDate, xlAnd, "<=" & EndDate
它有望让您更近一步。您可能还需要定义 xlAnd 和其他常量。
VBScript
,如其他答案所述,不处理命名参数。
因此,它不知道您所说的Worksheets
是什么意思。 它们需要完全限定为属于父对象的引用objWorkbook
。
objWorkbook.Worksheets("PO Buy Update").Range("H3").AutoFilter 8, "<>"
会正常工作。 如果要使用命名参数,则需要将任何和所有 excel 命名值(例如 xlAnd
(替换为枚举值等效值,或者将它们声明为常量并设置值以匹配枚举值。
感谢您的回答并指出我,我的错误。我的最终解决方案如下
Dim Path
Dim BeginDate
Dim EndDate
Path = WScript.Arguments.Item(0)
BeginDate = WScript.Arguments.Item(1)
EndDate = WScript.Arguments.Item(2)
Set objExcel = CreateObject("Excel.Application")
Set objWorkBook = objExcel.Workbooks.Open(Path)
Set c=objWorkBook.Worksheets("PO Buy Update") // Attached WorkbookSheet(name) into variable and then specified which row, column is a header
objExcel.Visible = True
c.cells(3,8).AutoFilter 8, "<>"
c.cells(3,17).AutoFilter 17, "<>"
c.cells(3,16).AutoFilter 16, ">=" & BeginDate, 1, "<=" & EndDate
我相信我的主要问题是我在第三行有标题,当我没有指定脚本在第一行中搜索过滤选项时。
再次感谢您的时间!