#Persistent #SingleInstance,force ;2015年1月4日 ;sunwind ;读取excel实例 ;~ excel := ComObjActive("Excel.Application") excel := ComObjCreate("Excel.Application") filepath:=A_ScriptDir . "循环读取.xlsx" ;自动运行、初始化 Run notepad xls:=Check(filepath,excel) ;检测是否打开了xlsx文件 if (xls="") ;未打开则打开 { InputBox,_filepath,请打开相应Excel文件!,请输入xls路径,,300,200,,,,15,%filepath% if ErrorLevel ExitApp else RunWait %_filepath% ;持续等待,直到打开 loop { xls:=Check(filepath,excel) ToolTip 等待excel启动完成 Sleep,500 if a_index>5 MsgBox 等待太长时间了,请检查下。 }until IsObject(xls) } ToolTip TrayTip ,,已就绪 ;~ 若获取A2:B30区域值,实例如下: r=30 arr := excel.Range["A2:B" r].value ;~ MsgBox % arr.MaxIndex(1) ; total rows ;~ MsgBox % arr.MaxIndex(2) ; total columns ; 创建图形界面 Gui, Add, ListView, r30 w180 gMyListView, 日期|报表名称 Loop, % arr.MaxIndex(1) { i:=A_Index LV_Add("", arr[i,1],arr[i,2]) } LV_ModifyCol() ; 根据内容自动调整每列的大小. Gui, Show Gui,+AlwaysOnTop return MyListView: if A_GuiEvent = DoubleClick { LV_GetText(RowText, A_EventInfo,2) ; 从行的第2个字段中获取文本. ToolTip You double-clicked row number %A_EventInfo%. Text: "%RowText%" ControlSend,Edit1,%RowText%,无标题 ControlSend,Edit1,`n,无标题 } return GuiClose: ; 表示当窗口关闭时脚本应自动退出. ExitApp ;辅助函数 Check(filepath,oExcel) { for Item in oExcel.workbooks { ;Name 文件名 FullName路径名 ;~ data .= "Name:`t"oexcel.workbooks(A_index).FullName "`n" IF (oexcel.workbooks(A_index).FullName=filepath) xls:=item } if IsObject(xls) return xls else return "" }