autohotkey +vba 利用文本文件传递数据

Sub copy()
    
    Dim rg As Range
    
On Error GoTo No
    Set rg = Cells(ActiveCell.Row, 2)
    rg.Select
    Dim sTemp As String, s() As String
    's = Replace(sTemp, vbCrLf, ";")
    's = Replace(s, vbTab, ";")
    'MyData.SetText (s)
    'MyData.PutInClipboard
    If (rg.Column <> 2 Or rg <> "" Or rg.Offset(0, -1) <> "" Or rg.Offset(0, 1) <> "" _
    Or rg.Offset(0, 2) <> "" Or rg.Offset(0, 3) <> "" Or rg.Offset(0, 4) <> "" _
    Or rg.Offset(0, 5) <> "" Or rg.Offset(0, 6) <> "" Or rg.Offset(0, 7) <> "") Then
        MsgBox "要输入的位置不对"
        Exit Sub
    End If
    
    Dim objTXTFO As FileOperation
    Set objTXTFO = New FileOperation
    objTXTFO.OpenFile "D:\temp.txt", "R"
    
        sTemp = objTXTFO.GetLine
        's = Replace(sTemp, vbCrLf, ";")
        sTemp = Replace(sTemp, vbTab, ";")
        s() = Split(sTemp, ";")
        If (Mid(s(0), 2, 1) <> "I") Then
            MsgBox "无销售单号,请查看D:\temp.txt"
            Exit Sub
        End If
        rg = s(0)
        rg.Offset(0, -1) = s(1)
        rg.Offset(0, 1) = s(13)
        rg.Offset(0, 2) = s(17)
        'rg.Offset(0, 4) = s(16)
        rg.Offset(0, 7) = s(22)
        
    Dim Num As Double
    Num = 0
    Do While Not (objTXTFO.AtEndOfFile)
        'MsgBox objTXTFO.GetLine
        sTemp = objTXTFO.GetLine
        's = Replace(sTemp, vbCrLf, ";")
        sTemp = Replace(sTemp, vbTab, ";")
        s() = Split(sTemp, ";")
        Num = Num + Val(s(5))
    Loop
     rg.Offset(0, 3) = Num
    objTXTFO.CloseFile
    rg.Offset(1, 0).Select
      Exit Sub
No:
  MsgBox "数据有误,请查看D:\temp.txt"
End Sub


#z:: ;Run www.autohotkey.com
SetTitleMatchMode 2
Num:=0
i:=0
Err:=0
Loop
{
	times:=0
	;MouseClick, left,  118,  85+i*15
	clipboard=
	Loop
	{
		Sleep, 500
			send  ^c
			Sleep 100   ;;;;;;;;
		if( StrLen(Clipboard)>5)
		{
			send #c
			Sleep 100  ;;;;;;;;发指令需要时间important!!!
			;MsgBox tryd
			if(Err=1)
				break
			;MouseClick, Left ,352,635,1
			;Sleep, 1000
			;send #v
			Sleep 100 ;;;;;;;;;
			if(Err=0){
				WinMinimize,四川科伦每天销售发货明细
			}
			break	;;;;;;;;不管是否成功都需要退出一个循环!!!		
		}
		times:=times+1
		if(times>=20)
		{
			MsgBox 选择销售单超时
			break	
		}
			
	}
	if(times>=20 or Err=1)
	{
		MsgBox 选择销售单超时或出现错误
		break	
	}	
	Num:=Num+1
	if(Num>=2)
	{
		MsgBox 销售单达到了50条,请确认
		break
	}
	i:=i+1
	if(i>=3)
	{
		;MouseClick, Left ,352,635,1
		;Sleep, 1000
		i:=0
		;break
	}	
}
return

#c::

SetTitleMatchMode 2
;IfWinActive,UFIDA NewCentury
{	
	FileDelete ,D:\temp.txt
	;MouseClick, Left ;352,635,1
	;Sleep, 2000
	clipboard=
	send  ^c
	Sleep 100   ;;;;;;;;
	if( StrLen(Clipboard)>5)
	{
		StringMid, tt, Clipboard, 2, 1
		if tt = I
		{
			FileAppend,%Clipboard%, D:\temp.txt
			FileAppend,`n, D:\temp.txt
			;msgbox 销售单数据已经拷贝入D:\temp.txt,请点击下面的单据统计销售件数
		}
		else
		{
			MsgBox,选择销售单错误,请重新选择
			Err:=1
		}
	}
	else
	{
		MsgBox,选择销售单错误,请重新选择
		Err:=1
	}
}
;else
;	msgbox,UFIDA NewCentury 没激活
return

#v::
SetTitleMatchMode 2
;IfWinActive,UFIDA NewCentury
{	
	;MouseClick, Left ;352,635,1
	;MouseClick, Left ,352,635,1
	;Sleep, 1000
	clipboard=
	send  ^c
	Sleep 100   ;;;;;;;;
	ttt=%Clipboard%
	if( StrLen(Clipboard)>5)
	{
		StringMid, tt, Clipboard, 2, 1
		if tt <> I
		{
			nLen=0	
			nLen:=nLen+1
			FileAppend,%Clipboard%, D:\temp.txt
			FileAppend,`n, D:\temp.txt
			send,{Down}
			sleep,500
			send,^c	
			loop {
				if (ttt=Clipboard){
				break
				}
				if(nLen>50){
					MsgBox,销售多于50条,是否有错
					break
				}
				FileAppend,%Clipboard%, D:\temp.txt
				FileAppend,`n, D:\temp.txt
				send,{Down}
				sleep,500
				send,^c	
				nLen:=nLen+1
			}
			IfWinExist 四川科伦每天销售发货明细
			{
				WinActivate
				WinWaitActive
				send ^+l
			}
			else{
				MsgBox,四川科伦每天销售发货明细没打开
				Err=1
			}
		}
		else
		{
			MsgBox,选择销售件数单错误,请重新选择
			Err=1
		}
	}
	else
	{
		MsgBox,选择销售件数单错误,请重新选择
		Err=1
	}
}
;else
;	msgbox,UFIDA NewCentury 没激活
return


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值