半肾
精华
|
战斗力 鹅
|
回帖 0
注册时间 2017-1-23
|
楼主 |
发表于 2018-11-6 08:30
|
显示全部楼层
本帖最后由 spikedingo 于 2018-11-6 08:37 编辑
#RequireAdmin
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_icon=C:\WINDOWS\System32\SHELL32.dll|-145
#PRE_UseX64=n
#PRE_Res_requestedExecutionLevel=None
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Excel.au3>
#include <Constants.au3>
Opt('MouseCoordMode', 2)
AutoItSetOption("SendKeyDelay", 100)
; 链接到已打开的excel工作表
Local $excel = _ExcelBookAttach("444.xlsx" ,"FileName")
; 弹框请求起始循环的行数
$i = InputBox("准备", "请输入起始行数")
; Dim $i = 102
; While语句,当病历号栏有值时,就继续操作,否则退出循环
While _ExcelReadCell($excel,"b"&$i) <> ""
; If语句,读取到完成状态栏(E)数值非1时,继续操作,1代表已完成,可以跳过
if _ExcelReadCell($excel,"e"&$i) <> 1 Then
; 读取病历号
Local $pNum = _ExcelReadCell($excel,"b"&$i)
; 保存病人姓名以做容错判断
Local $pName = _ExcelReadCell($excel,"c"&$i)
; 保存病人应该充值的金额
Local $pMoney = _ExcelReadCell($excel,"a"&$i)
; 将病历号存入剪切板
; 开始卫宁软件部分操作
; 获取充值卡操作窗口并等待激活至活动窗口
Local $handle = WinGetHandle("[CLASS:TFormMain]")
WinActivate($handle)
WinWaitActive($handle)
; 首先确定切换到充值用户列表
Sleep(100)
MouseClick("left", 76, 12, 2, 5)
; 聚焦病历号窗口
; 判断病历号输入框内病历号是否正确,否则一直执行输入程序
ControlFocus($handle,"","TEdit1")
While ControlGetText($handle,"","TEdit1") <> $pNum
AutoItSetOption("SendKeyDelay", 100)
MouseClick("left", 76, 12, 2, 5)
ControlFocus($handle,"","TEdit1")
; 确保内容已清空
;
; 粘贴病历号
Send($pNum)
; 按回车确定
Local $text = ControlGetText($handle,"","TEdit1")
WEnd
Send("{ENTER}")
; 点击保存
ControlClick($handle, "", "TBitBtn10")
; 等待
Sleep(200)
; 获取弹出的提示窗口,等待其活动后点击确定按钮
Local $Notice = WinWaitActive("[CLASS:#32770]")
ControlClick($Notice, "", "Button1")
Sleep(200)
; 获取卡号供后面粘贴用
Local $CardNum = ControlGetText($handle,"","TEdit9")
; 双击病人信息,至充值界面
WinActivate($handle)
WinWaitActive($handle)
MouseClick("left", 179, 57, 2, 5)
; 获取充值金额窗口
Sleep(200)
; 在充值前检查是否正确
Local $info = WinGetText($handle)
Local $correct = StringInStr($info,$pName)
if $correct <> 0 Then
; 让金额输入窗口聚焦
ControlFocus($handle,"","TEdit6")
; 输入充值金额
Send($pMoney)
Sleep(200)
; 点击六次回车,完成充值
Send("{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}")
; end winning
Sleep(200)
; 充值后,保存之前留存的卡号,并在E栏打上1
_ExcelWriteCell($excel, $CardNum, "d"&$i)
_ExcelWriteCell($excel, 1, "e"&$i)
Endif
Else
_ExcelWriteCell($excel, "Done!", "f"&$i)
Endif
$i += 1
WEnd
后续:LZ成功了,解决了整个科室分摊的1W条信息录入问题尝到了甜头
|
评分
-
查看全部评分
|