在 AAE 中使用 VBS 脚本并获取 1024 预期语句



我是 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

我相信我的主要问题是我在第三行有标题,当我没有指定脚本在第一行中搜索过滤选项时。

再次感谢您的时间!

相关内容

  • 没有找到相关文章

最新更新