2014-12-05 16 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常數。

相關問題