在线学习
About Us

培训教程

首页 >>在线学习 >>培训教程

勤哲Excel服务器学习和下载

>

20.2 Excel服务器VBA编程接口

Excel服务器客户端组件是在安装目录下的一个文件----ESClient.dll,它不是VBA程序,而是一个Com加载项,相当于对Excel附加了功能。Com载加项也是一种对象,我们可以在VBA程序中调用它提供的方法(编程接口)。

若要在VBA程序中调用Excel服务器的功能,首先需要声明对象,通过调用对象的方法来完成想要的功能,最后,还需要释放对象。

如下面的代码片断,第1行声明了一个变量对象oAdd,第2行设置该变量为Excel服务器客户端组件所对应的Com加载项。中间部分具体的操作,最后1行释放对象。

若要通过VBA程序操纵Excel服务器,开头的两行和最后的一行代码都是必需的,所不同的只是中间省略的部分。

Dim oAdd As Object

Set oAdd = Application.COMAddIns("ESClient.Connect").Object

…….

       这里可以调用客户端组件的不同方法

…….

Set oAdd = Nothing

20.2.1 自动保存、连续输入

方法说明

saveCase方法,作用是保存当前正在填报的表单。该方法有三个参数:

参数1:要省略

参数2:布尔型,是否省略保存对话框,默认值为False,也即显示保存对话框。

参数3:布尔型,是否询问继续填写下一张,默认值为True,也即询问是否填下一张。

返回值:布尔型,True表示保存成功,False表示保存失败

示例

我们通常用Excel服务器填报完成一张表单后,需要手工点击【保存】工具栏按钮,或选择“文件à保存”菜单,才能保存。对于有大量表单需连续输入的情况,这种做法需要键盘和鼠标交替操作,效率不高。

我们可以通过在Worksheet_selectionChange事件处理程序中调用saveCase方法,使得录入员只需要操作键盘,当数据录入完成,光标跳转到最后一个数据项出,自动保存,出现新的表单等待输入,过程中不需要使用鼠标。

假设有如下的模版,定义三个数据项:xy和录入时间,其中录入时间有默认值,xy需要输入。

我们希望录入员的辅助动作次数最少:

输入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行,释放对象(必须这样写)

本例在示例数据库中。

20.2.2 用按钮执行表间公式

方法

execQuery方式,作用是应用指定的表间公式,它只有一个参数,为字符串类型,其内容是一条或若干条表间公式的名称,若要执行的表间公式不止一条,彼此间需要用逗号分割(英文逗号)。

例如:

execQuery(“查询”),表示要执行当前模版上定义的表间公式“查询”

       execQuery(“查询,统计”),表示要连续执行当前模版上定义的表间公式“查询”和“统计”。

示例

复习第9章建立的“销售台帐”模板,我们定义了一个手动执行的表间公式“组合条件查询”。在模板上增加一个按钮,如图:

205

在按钮的Click事件处理程序中写如下代码:

1

Private Sub cmdQry_Click()

2

    Dim oAdd As Object

3

   

4

    Set oAdd = Application.COMAddIns("ESClient.Connect").Object

5

   

6

    Range("C4").select

7

    oAdd.execQuery ("组合条件查询")

8

 

9

    Set oAdd = Nothing

10

End Sub

 

24行,声明对象变量、赋值(必须这样写)

6行,光标放置到明细表的第1

7行,执行表间公式

9行,释放对象(必须这样写)