Какой правильный синтаксис для метода Cells.Find() в COM-объектах в скриптах AHK

Я хочу использовать COM-объекты в AHKscript для копирования / вставки строк данных, содержащихся в листе Excel, в веб-форму. У меня проблемы с извлечением последней строки данных, содержащихся в листе Excel, так что я могу сказать сценарию зацикливаться только над строками, которые содержат данные.

Я использую ответ о стекопотоке здесь и здесь, чтобы вычислить последнюю строку, но с трудом заставляю код работать:

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 (Rows:= ...), возвращая ошибку 0x800200005 - несоответствие типов, особенно с помощью метода Find.

Что меня удивляет, так это то, что:

  1. Код в строке 6 работает, когда я удаляю параметры SearchOrder и SearchDirection
  2. Код в строке 6 работает, когда вставляется как макрос в VBA в Excel
  3. Код аналогичен (исключая некоторые параметры) тому, что записывается в VBA Excel при использовании средства записи макросов

Под управлением Windows 7 Enterprise, MS Excel 2010 и Autohotkey 1.1.16.05.

1 ответ

Константы 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, которым еще не присвоен номер.

Другие вопросы по тегам