2014-12-05 713 views
1

我正在使用AHKscript中的COM对象将Excel工作表中包含的数据行复制/粘贴到Web表单中。我在提取Excel工作表中包含的最后一行数据时遇到问题,因此我可以告诉脚本仅循环包含数据的行。COM中的Cells.Find()方法的正确语法AHK脚本中的对象

我使用的答案上stackflow herehere来计算最后一排,但有一个很难得到工作代码:

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 - 类型不匹配错误,具体用'Find'方法。

什么是我百思不得其解的是:

  1. 在6个线工程中的代码,当我删除SearchOrder和VBA在Excel
  2. 宏时粘贴SearchDirection参数
  3. 在6号线工程中的代码
  4. 该代码与使用宏记录器时Excel中VBA中记录的内容类似(不包括某些参数)

运行Windows 7 Enterprise,MS Excel 2010和Autoho tkey 1.1.16.05。

+1

xlByRows和xlPrevious是excel constents和ahk不知道它们,也就是你需要在脚本中定义它们 – blackholyman 2014-12-05 14:01:43

+0

如果你找到了正确答案,请发布并接受。 – vasili111 2014-12-18 12:47:30

回答

0

常量xlByRowsxlPrevious对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 p罗珀(即而不是通过AutoHotkey),例如:
MsgBox xlByRows & " " & xlPrevious

注意:要查看正在运行的AutoHotkey脚本的变量,你可以用鼠标右键单击其托盘图标,然后单击Open,然后选择菜单栏上导航到View, Variables and their contents, 然后检查尚未分配号码的任何XL常数。