word报销单的脚本终于写完了

  某些神奇的单位用word做报销单,不点名.word的自动化难度比excel大的多,并且在word里面用表格更是恶心.简单做了一个有局限性的制作报销单的脚本.

 

实际效果视频,哦我发不了视频哈哈哈

将就看一下源码吧

objExcel:=Excel_Get() 
objExcel.Cells(2,1).Activate
loop
{
;建立;excel对象
objExcel:=Excel_Get() 

y:=objExcel.ActiveCell.Row
x:=objExcel.ActiveCell.Column  
arr:=[]  
Loop, % x-1
  arr.Push( objExcel.Cells(y,A_Index).Text ) 
if (objExcel.Cells(y,1).Value="")
  break
用途:=objExcel.Cells(y,1).Text
金额:=objExcel.Cells(y,2).Text

run "C:\Users\YZ\Desktop\MyCodeProject\Project\报销项目\墨华报销单模板.doc"
Sleep 2000
WinActivate ahk_exe WINWORD.EXE
SendInput,^{End}
WinActivate ahk_exe WINWORD.EXE
;点击日期旁边
ClickPosition(906,601, 1, 0, "Window", true)
Sleep 100
SendInput,% A_YYYY "年"  A_MM "月"  A_DD "日"
Sleep 100
;点击用途
WinActivate ahk_exe WINWORD.EXE
ClickPosition(805,722, 1, 0, "Window", true)
SendInput,% 用途
; Sleep 300
; SendInput,{Tab 2}
; Sleep 200
a:=金额
b:=RegExReplace(a,"[\.]")
粘贴次数:=StrLen(b)

if (InStr(a, ".")<>0)  ?  位数:=InStr(a, ".")-1
  :位数:=StrLen(a)
次数:=4+3-位数

  SendInput,{tab %次数%}
;加一个符号
Sleep 100
Send,¥
Sleep 100
Send {Tab}


loop
{
  if (A_Index=粘贴次数+1)
    break
  Clipboard:=SubStr(b,A_Index,1)
  ClipWait
  if WinExist("ahk_exe WINWORD.EXE")
    WinActivate
    else
    MsgBox 报错
  Sleep 500
  SendInput,^v
  Sleep 400
  SendInput,{Tab}
  
}
if (InStr(a, "."))
  send,0
else
{
  send,0
  Sleep 100
  send,{Tab}
  send,0
}
;点击大写金额
Sleep 200
ClickPosition(724,891, 1, 0, "Window", true)
send,V
Sleep 200
send,% a
send,b
Sleep 1000
send,% InStr(a, ".")  ? "整" :  "元整"
;send,% RegExMatch(a,"\.")  ?  "元整"  :  "整"
Sleep 1000

ow:= ComObjActive("Word.Application")
ow.ActiveDocument.SaveAs2("C:\2.23\%用途%.doc")
ow.ActiveDocument.Close
objExcel.Cells(y+1,1).Activate
}
return

给TA捐赠
共{{data.count}}人
人已捐赠
其他

AHK 秒转为为小时分 自用改成通用版 _MOD()

2022-2-24 16:58:30

其他

总结一下ahk里面的%用法

2022-2-25 15:17:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索