Удалось воспроизвести проблему, действительно, странное поведение.
if !Excel := Excel_Get()
Return
XLSht := Excel.ActiveSheet
loop 2 {
row := A_Index
loop 2 {
col := A_Index
XLSht.Cells(row, col).Value := "test"
}
}
Excel_Get(WinTitle := "ahk_class XLMAIN") {
ControlGet, hwnd, hwnd,, Excel71, %WinTitle%
if !hwnd
return
Window := AccObjectFromWindow(hwnd, -16)
Loop {
try Application := Window.Application
catch
ControlSend, Excel71, {esc}, %WinTitle%
} Until !!Application
return Application
}
AccObjectFromWindow(hWnd, idObject = 0)
{
static IID_IDispatch := "{00020400-0000-0000-C000-000000000046}"
, IID_IAccessible := "{618736E0-3C3D-11CF-810C-00AA00389B71}"
, OBJID_NATIVEOM := 0xFFFFFFF0, VT_DISPATCH := 9, F_OWNVALUE := 1
, h := DllCall("LoadLibrary", Str, "oleacc", Ptr)
VarSetCapacity(IID, 16), idObject &= 0xFFFFFFFF
DllCall("ole32\CLSIDFromString", Str, idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, Ptr, &IID)
if DllCall("oleacc\AccessibleObjectFromWindow", Ptr, hWnd, UInt, idObject, Ptr, &IID, PtrP, pAcc) = 0
Return ComObjEnwrap(VT_DISPATCH, pAcc, F_OWNVALUE)
}
Работает, если заменить col := A_Index на col := A_Index + 0.
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder