我希望在AHKscript中使用COM对象将Excel工作表中包含的数据行复制/粘贴到Web表单中。我在提取Excel工作表中包含的最后一行数据时遇到问题,这样我就可以告诉脚本只在包含数据的行上循环。
我正在使用stackflow here和here上的答案计算最后一行,但很难让代码生效:
filepath := "C:\.....\test.xlsx"
X1 := ComObjCreate("Excel.Application")
X1.Visible := 1
X1.Workbooks.Open(filepath)
X1.ActiveWorkbook.Sheets("Input").Activate
Rows := X1.ActiveSheet.Cells.Find(What:="*", After:=X1.ActiveSheet.Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
MsgBox % "value is" . Rows
Return
代码在第6行(行:= ...)中断,返回0x800200005 - 特别使用“查找”方法键入不匹配错误。
让我感到困惑的是:
运行Windows 7企业版,MS Excel 2010和Autohotkey 1.1.16.05。
答案 0 :(得分:0)
常量xlByRows
和xlPrevious
对AutoHotkey没有任何意义,它们是空白变量。
需要在第6行之前的脚本中的某个点为它们分配数值。
在脚本中的适当位置包含这些行:
xlByRows := 1
xlPrevious := 2
来源:
Microsoft Excel常量[Excel 2003 VBA语言参考]
https://msdn.microsoft.com/en-us/library/office/aa221100(v=office.11).aspx
注意:可以从Excel VBA中正确检索常量(即不通过AutoHotkey),例如:
MsgBox xlByRows & " " & xlPrevious
。
注意:要查看正在运行的AutoHotkey脚本的变量,您可以右键单击其托盘图标并单击Open
,然后在菜单栏上导航到View, Variables and their contents
,
然后检查尚未分配号码的任何xl常量。