AHK新手在这里。
我有一个包含数据的电子表格,用于填写IE中应用程序中的表单。
也许有更好的方法,但是可以在没有Loop函数的情况下解析剪贴板吗?
我已创建此代码以复制excel中的所选范围并解析剪贴板,将每个值粘贴到列中:
^`::
Send, ^c ; this copies the column in Excel
WinActivate, ahk_exe iexplore.exe ; activate browser
Sleep 30
Loop, parse, clipboard, `n, `r
{
Send, ^a
SendRaw, %A_LoopField%
Sleep 30
Send, {down}
Sleep 30
}
clipboard =
Return
问题是数据无法始终粘贴到列中。有时,模式会有以下几点:
Send, ^c ; copy the selected data in Excel
WinActivate, ahk_exe iexplore.exe ; activate browser
Sleep 30
;paste first data item
SendInput, {down}{tab}
;paste second data item
SendInput, +{tab}{down}
;paste third data item
SendInput, {down}
;paste fourth data item
SendInput, {down}
;paste fifth data item
另外,有没有办法根据名称开头激活窗口(Excel电子表格)?基本上,我有几个报告(数据来自哪里),例如,从XXX开始,然后有一个识别参考号(例如XYZ 31259875,XYZ 57896547)。这些报告中只有一个会一次开放。
请原谅我的无知,并提前感谢你!
答案 0 :(得分:1)
也许使用:
ComObjGet()
你可以做的是获取Excel COM对象,然后它就像vba:
MyWorkbook := ComObjGet("Somepath here")
row = 0
column := 1 ;Column A as an example
Loop, 50 ;Just an example for the loop
{
row:= row + 1
Cell:= MyWorkbook.Sheets(1).Cells(row, column).text
WinActivate, ahk_exe iexplore.exe
...your other events
}`
此外,我强烈建议您使用IE的COM对象,这样您就可以使用元素的ID或类似的东西来获取控件。例如:
;Get Pointer to IE
For ie in ComObjCreate("Shell.Application").Windows
{
if (ie.LocationName="SomeWindowNameHere") and InStr(ie.FullName, "iexplore.exe")
{
break
}
}
最后......
ie.getelementbyid("SomeElementID").value:=Cell