Какой правильный синтаксис для метода 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.
Что меня удивляет, так это то, что:
- Код в строке 6 работает, когда я удаляю параметры SearchOrder и SearchDirection
- Код в строке 6 работает, когда вставляется как макрос в VBA в Excel
- Код аналогичен (исключая некоторые параметры) тому, что записывается в 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, которым еще не присвоен номер.