这是很早之前(2014年左右)的一个按键精灵脚本,是把检测数据录入到ERP系统中。

脚本流程
[General]
SyntaxVersion=2
BeginHotkey=116
BeginHotkeyMod=0
PauseHotkey=0
PauseHotkeyMod=0
StopHotkey=123
StopHotkeyMod=0
RunOnce=1
EnableWindow=
MacroID=a741bb6d-b67a-4f38-91da-56080579bd6f
Description=MM_小大_录入
Enable=1
AutoRun=0
[Repeat]
Type=0
Number=1
[SetupUI]
Type=2
QUI=
[Relative]
SetupOCXFile=
[Comment]

[Script]
//声明尺寸单位,还有上下限值,这里可以快速修改
//这里是MM_下上

Dim inmm,M,N,count
inmm = "MM"
M = 0
N = 1
count = 0

Rem 开头

//下面是复制项目名称
KeyDown 17, 1
KeyPress 67, 1
KeyUp 17, 1

//向右移动一个位置到范围值的单元格
KeyPress "Tab", 1

//去掉范围值字符串的末尾回车,赋值给(name)
Name = left(Plugin.Sys.GetCLB(), len(Plugin.Sys.GetCLB()) - 2)

//下面是复制数据单元格
KeyDown 17, 1
KeyPress 67, 1
KeyUp 17, 1

//归位操作,向左移动一个单元格,再向下移动一个单元格
KeyPress "Left", 1
KeyPress "Down", 1

//下面是对数据进行处理,第一步是从粘贴板读取字符串(23.5-26&回车)

//去掉范围值字符串的末尾回车,赋值给(value)
Value = left(Plugin.Sys.GetCLB(), len(Plugin.Sys.GetCLB()) - 2)


//这里是处理6g等情况时候Name的值得问题,要把6g等加在“通规”的后面形成新的name
Dim weizhi2, weizhi3, weizhi4, weizhi5, name2
weizhi2 = InStr(value, "h")
weizhi3 = InStr(value, "g")
//设置“3a”和“2a”,防止出现“max”,也会被认为符合本部分的条件
weizhi4 = InStr(value, "2a")
weizhi5 = InStr(value, "3a")
If weizhi2 + weizhi3 + weizhi4 + weizhi5 > 0 Then 
//组合name和value,这里注意字符串连接的方法是用“&”
Name2=Name&"("&value&")"

//把新name值赋予粘贴板,两种情况,两种值,两种选择
Call Plugin.Sys.SetCLB(Name2)
Else 
Call Plugin.Sys.SetCLB(Name)
End if

//下面是切换回ERP
KeyDown 18, 1
KeyPress 9, 1
KeyUp 18, 1

//由于默认光标在顶头的位置,所以要向右移动2个位置
KeyPress "Tab", 2

//下面是粘贴项目名称
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1

//判断是否是范围值,还是“3A、6G、凹痕”这些字样
//如果是包含“-”的就是范围值字符串,就进入提取上下限值
Dim weizhi,weizhi0, weizhi1, daxiaozhi
weizhi = InStr(value, "-")
weizhi0 = InStr(value, "max")
weizhi1 = InStr(value, "min")

If weizhi > 0 Then 
daxiaozhi = Split(value,"-")
//把上下限值赋予Max和Min,方便后面使用
Dim Max,Min
Max = daxiaozhi(N)
Min = daxiaozhi(M)

//向右移动光标到上限值的位置,为下一步粘贴做准备
KeyPress "Tab", 2

Delay 500

//把上限值赋予粘贴板
Call Plugin.Sys.SetCLB(Max)

//粘贴上限值
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1

//向右移动到下限值的位置
KeyPress "Tab", 1

//把下限值Min赋予粘贴板
Call Plugin.Sys.SetCLB(Min)

Delay 500

//粘贴下限值
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1

//向右移动2个位置到尺寸单位,
KeyPress "Tab", 2

//承接上面的包含"-"的条件语句,这里处理“12Max”的情况
ElseIf weizhi0 > 0 Then
//Max2是“12max”中的“12”
Dim Max2
Max2 = left(value, len(value) - 3)
//把上限值赋予粘贴板
Call Plugin.Sys.SetCLB(Max2)

//向右移动光标到上限值的位置
KeyPress "Tab", 2
//粘贴上限值
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1

//向右移动3个位置到尺寸单位
KeyPress "Tab", 3

ElseIf weizhi1 > 0 Then

Call Plugin.Sys.SetCLB("999")

//向右移动光标到上限值的位置
KeyPress "Tab", 2
//粘贴上限值
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1

//向右移动光标到下限值的位置
KeyPress "Tab", 1

//Min2是“12min”中的“12”
Dim Min2
Min2 = left(value, len(value) - 3)
//把上限值赋予粘贴板
Call Plugin.Sys.SetCLB(Min2)

//粘贴上限值
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1

//向右移动2个位置到尺寸单位
KeyPress "Tab", 2

//处理“6g、3a、6h”的情况
ElseIf weizhi2 + weizhi3+ weizhi4> 0 Then
//从name位置直接到尺寸单位的位置
KeyPress "Tab", 5

//weizhi=0指的是不包含“-”
ElseIf weizhi = 0 Then
//不用再对value修改,可以直接把value赋予粘贴板
Call Plugin.Sys.SetCLB(value)

//向右移动4个位置到“品检描述”的位置
KeyPress "Tab", 4

//粘贴“3A、6G、凹痕”等
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1
//向右移动到尺寸单位的位置
KeyPress "Tab", 1
//完成尺寸单位之前的输入,并移动到尺寸单位的位置
End If

//可以使用下面的方法,也可以使用ERP系统自己的F3,可以复制上面对应位置的项目,
//实践发现“F3”复制的方式会受到项目顺序的影响,还有一些是第一项不是范围值的情况。
//KeyPress "F3", 1

//这里处理尺寸单位部分的值:MM或者PCS

//这里是如果遇到“硬度”“通规”“止规”“外观”项
Dim a, b, c, danwei
a = InStr(Name, "硬")
b = InStr(Name, "规")
c = InStr(Name, "观")
If a + b + c > 0 Then 
//注意上面这个if语句,then一定要和if在一行
danwei = "PCS"
//下面是正常的范围值,数值时候的情况
Else
danwei = inmm
End If

//把“MM”赋予粘贴板
Call Plugin.Sys.SetCLB(danwei)

//粘贴尺寸单位到空格
KeyDown 17, 1
KeyPress 86, 1
KeyUp 17, 1

//在ERP里移动光标到下一项
//{KeyPress "Down", 1}这个命令的问题在于 如果是已经输入过得表,
//在尺寸单位处按“下”,不会到下一项的开头,二十直接下一项对应的尺寸单位处
//所以这里是使用ERP系统自己的快捷键“shift+down”,这里又会涉及到shift失灵的问题
//解决方案是添加“SetSimMode 1”,这样就可以在已经输入的表中输入啦。
KeyPress "Down", 1

//Delay 1000
SetSimMode 1
KeyDown 16, 1
KeyPress 117, 1
KeyUp 16, 1
SetSimMode 0
//Delay 1000 
count = count + 1

//如果copy里面包含“、”的话,就是结尾啦
Dim jiewei
jiewei = InStr(Value,"、")
If jiewei > 0 Then 
//使用Erp系统自己的快捷键“shift+F6”,删除当前的记录,并自动跳动光标到下一行的开头
SetSimMode 1
For 26-2*count
KeyDown 16, 1
KeyPress 117, 1
KeyUp 16, 1
Next
//及时恢复按键普通模拟,有助于顺畅运行
SetSimMode 0
//结束运行
EndScript
End If

//下面是切换回Excel
KeyDown 18, 1
KeyPress 9, 1
KeyUp 18, 1
//实践知道,延迟一下,让电脑反应过来
//Delay 800

Goto 开头


扫一扫 手机查看

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注