|
发表于 2009-2-16 20:39:32
|
显示全部楼层
saveCase方法
方法说明saveCase方法,作用是保存当前正在填报的表单。该方法有三个参数:
参数1:要省略
参数2:布尔型,是否省略保存对话框,默认值为False,也即显示保存对话框。
参数3:布尔型,是否询问继续填写下一张,默认值为True,也即询问是否填下一张。
返回值:布尔型,True表示保存成功,False表示保存失败
示例我们通常用Excel服务器填报完成一张表单后,需要手工点击【保存】工具栏按钮,或选择“文件à保存”菜单,才能保存。对于有大量表单需连续输入的情况,这种做法需要键盘和鼠标交替操作,效率不高。
我们可以通过在Worksheet_selectionChange事件处理程序中调用saveCase方法,使得录入员只需要操作键盘,当数据录入完成,光标跳转到最后一个数据项出,自动保存,出现新的表单等待输入,过程中不需要使用鼠标。
假设有如下的模版,定义三个数据项:x、y和录入时间,其中录入时间有默认值,x和y需要输入。
我们希望录入员的辅助动作次数最少:
输入x,按回车,输入y,按回车,保存成功,提示是否填下一张,按回车(相当于回答【是】),出现新的一张空白表,光标自动回到C2处。
输入一张单据的过程中辅助动作只有三次回车,没有鼠标动作。下面看一下实现方式。
在模版的设计状态下,打开Visual Basic编辑器,在Worksheet_selectionChange事件处理程序中输入如下代码:(为讲解方便,加上了行号)
1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
2
Dim oAdd As Object
3
Dim bResult As Boolean
4
5
Set oAdd = Application.COMAddIns("ESClient.Connect").Object
6
7
If Target.Address = "$C$4" Then
8
bResult = oAdd.saveCase(, True, True)
9
If bResult = False Then
10
MsgBox "保存失败!"
11
Else
12
Range("C2").Select
13
End If
14
End If
15
16
Set oAdd = Nothing
17
End Sub
第1行,Worksheet_SelectionChange为事件处理程序名,它对应于单元区域被选中这一事件。这个事件处理程序有一个参数Target,它代表被选中的单元区域。
第2行,声明对象变量(必须这样写)
第5行,设置变量oAdd对应于Excel服务器客户端组件(必须这样写)
第7行,判断光标跳到的单元格是不是C4,如果不是,直接转到第16行(什么也没做)
第8行,(光标跳到了C4单元格),调用Excel服务器客户端组件提供的saveCase方法,实际保存当前已填好的表单,不弹出保存对话框,但保存后会询问是否继续填写。
第12行,(保存成功)光标跳转到C2处,等待继续输入。
第16行,释放对象(必须这样写) |
|