在 AAE 中使用 VBS 脚本并获取 1024 Expect 语句
Using VBS Script in AAE and getting 1024 Expect Statement
我是 VBS 编码的新手,我的 VBScript 中一直出现 1024 Expect 语句错误。如果有人能指出我哪里有错误,我将不胜感激。
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 无法处理命名参数。将最后一行更改为
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 中,调用 function/method 时不必提及参数名称。您只需要传递值。参数名称在 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
Reference 到自动过滤方法
Reference到枚举常量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
我认为我的主要问题是我在第三行有 header 而我没有指定脚本在第一行搜索过滤选项。
再次感谢您的宝贵时间!
我是 VBS 编码的新手,我的 VBScript 中一直出现 1024 Expect 语句错误。如果有人能指出我哪里有错误,我将不胜感激。
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 无法处理命名参数。将最后一行更改为
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 中,调用 function/method 时不必提及参数名称。您只需要传递值。参数名称在 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
Reference 到自动过滤方法
Reference到枚举常量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
我认为我的主要问题是我在第三行有 header 而我没有指定脚本在第一行搜索过滤选项。
再次感谢您的宝贵时间!